【发布时间】: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