【问题标题】:Return Null in select box for choose city and state在选择框中返回 Null 以选择城市和州
【发布时间】:2021-10-01 04:17:48
【问题描述】:

这是我的 2 个模型。我添加迁移并成功更新。

  public class UserInfo : BaseEntity
{
    #region FirstSartProgram

    public long UserPackageId { get; set; }

    [Display(Name = "Address")]
    [MaxLength(350)]
    public string Address { get; set; }

    [Display(Name = "Job")]
    [MaxLength(150)]
    public string Job { get; set; }

    [Display(Name = "UserInfoSituation")]
    public UserInfoSituation? UserInfoSituation { get; set; }

    .....


     public long? LocationId { get; set; }

#region Relations

    public ICollection<PackageFile> PackageFiles { get; set; }

    [ForeignKey("UserPackageId")]
    public UserPackage UserPackage { get; set; }

    [ForeignKey("LocationId")]
    public Location.Location Location { get; set; }

    #endregion

第二个是:

   #region Properties

    [Display(Name = "Title")]
    [Required(ErrorMessage = "Required")]
    [MaxLength(200)]
    public string Title { get; set; }

    public long? ParentId { get; set; }

    [Display(Name = "IsDeleted")]
    public bool IsDeleted { get; set; }

    [Display(Name = "IsActive")]
    public bool IsActive { get; set; }

    #endregion

    #region Relations

    [ForeignKey("ParentId")]
    public Location Parent { get; set; }

 
    public ICollection<UserInfo.UserInfo>  UserInfos { get; set; }

    #endregion

正如我所说的更新数据库是好的。 我写了一些创建表单的方法。但是当我想用这个方法创建或编辑时,我有错误:

    [HttpPost("userInfo/first-start-userInfo/{packageId}")]
    public async Task<IActionResult> FirstStartUserInfo(CreateFirstStartUserInfoViewModel firstStartUserInfo)
    {
        var userId = User.GetCurrentUserId();
        if (!ModelState.IsValid) return View(firstStartUserInfo);
        var res = await _packageService.CreateFirstStartUserInfoByUser(firstStartUserInfo, userId);
        switch (res.UserInfoType)
        {
            case UserInfoType.NotValid: return RedirectToAction("NotFound","Home");
            case UserInfoType.NotFound: return RedirectToAction("NotFound","Home");
            case UserInfoType.Success:
                return RedirectToAction("SecondStartUserInfo", "UserInfo", new { UserInfoId = res.UserInfoId,menu=UserPanelMenu.Packages });
        }
        return View(firstStartUserInfo);
    }

我在选择列表中看到了城市和州。 但是当我创建表单时,数据库中的位置 ID 为空

查看:

 <form method="post" asp-controller="UserInfo" asp-action="FirstStartUserInfo" asp-route-menu="Packages">
            <input type="hidden" asp-for="PackageId" />
            <div>
                <div class="col-xl-7">
                    
                    
                    <div class="my-4">
                        <label class="w-100 d-flex align-items-center" for="">
                            <label>State </label>
                          
                            <select   asp-for="LocationId" asp-items="(IEnumerable<SelectListItem>)@ViewData["State"]"  class="form-control">
                               
                            </select>
                            <label>city </label>
                            <select  asp-for="LocationId" asp-items="(IEnumerable<SelectListItem>)@ViewData["City"]" id=" " class="form-control ">
                              
                            </select>
                        </label>
                     
                    </div>

........

 @{
ViewData["Title"] = _localizer["GetUserInfo"];
IEnumerable<UserLocationViewModel> state = ViewData["State"] as IEnumerable<UserLocationViewModel>;   
IEnumerable<UserLocationViewModel> city = ViewData["City"] as IEnumerable<UserLocationViewModel>;   

}

【问题讨论】:

  • 嗨@hasti.au,FirstStartUserInfo 方法是否用于渲染您的视图?如果是这样,请设置断点并检查firstStartUserInfo 变量是否在您的方法中具有LocationId。你的CreateFirstStartUserInfoViewModel 是什么?很多事情你没有告诉我们。请分享更多细节。

标签: asp.net-core controller sql-update migration database-migration


【解决方案1】:

LocationId 为空,因为您没有从选择列表 ID @ViewData["State","YouStateId"] 传递它。

试试这个:-

<select   asp-for="LocationId" asp-items="(IEnumerable<SelectListItem>)@ViewData["State","YouStateId"]"  class="form-control">

在这里你使用选择列表传递StateId。当您创建时,您会发现 LocationId 与您所在的州/城市。

您实际上并没有清楚地发布您的模型。我假设您的模型设计没问题,并且您的所有模型都有一个主键。还可以根据需要在模型中为城市和州提供单独的 ForeignKey。

【讨论】:

  • 在获取方法时,我会显示所有州和城市。但是当我想使用 post 方法时,位置 ID 不通过。 l 可以将除位置 ID 之外的所有参数传递给视图模型。位置是另一个模型(表)。我想从位置模型到这个用户信息视图模型
  • 我在视图数据上设置它。我更新了答案。如何将位置 ID 从另一个模型(表)传递到此视图模型?
  • @hasti.au 我看到你的模型,你使用```locationId```作为外键。也可以为空。但我在这个模型中看不到你的主键。使用主键键和外键分开,很明显,你没有清楚地发布你的类模型和这些名称。为此我很困惑。
  • @hasti.au 如果您愿意,我将通过 TeamViewer 连接您的计算机并尝试。我也看到了你发布的问题stackoverflow.com/questions/68516712/… 我觉得还不清楚。
  • 是的,我在这里发布了清除我的 2 个模型和 2 个视图模型。现在我想知道如何在另一个视图模型(或模型)的“位置”表中获取位置 ID?我应该使用包含吗?
猜你喜欢
  • 2023-03-25
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多