在下面的例子中,我试图将Id从Asp.Net Identity,“aspnetusers”表“Id”列保存到我的“Application”表中。填写“fullname”的下拉列表,但在我提交申请时不会保存到我的“申请”表。我需要在提交应用程序后将aspnetusers表中的“Id”保存到我的“应用程序”表中。非常感谢帮助!
控制器:
private ApplicationDbContext db = new ApplicationDbContext();
public ActionResult Index()
{
ViewBag.FullNameList = new SelectList(db.Users,"Id","FullName");
return View();
}
// POST: Applications/Create
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Include = "Id,FullName, FirstName,MiddleInitial,LastName,")] Application application)
{
if (ModelState.IsValid)
{
ViewBag.FullNameList = new SelectList(db.Users, "Id", "FullName", application.ApplicationUser);
db.Applications.Add(application);
db.SaveChanges();
return RedirectToAction("Thanks");
}
}
查看:
<p>
@Html.DropDownListFor(m => m.FullName, (SelectList)ViewBag.FullNameList, "Select Loan Officer")
</p>
型号:
public class Application
{
public int ApplicationId { get; set; }
[Required]
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Middle Initial")]
public string MiddleInitial { get; set; }
[Required]
[DisplayName("Last Name")]
public string LastName { get; set; }
public virtual string FullName {get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
答案 0 :(得分:5)
很多事情都错了:
Application
,但该商家没有FullName
属性。Bind
属性也不会包含它。ViewBag
成员保留您的选择列表,其名称与您尝试发布的字段相同。将其更改为ViewBag.FullNameChoices
。Id
&#34;用户和你无所事事。如果您实际拥有外键属性,则可以直接发布到该属性,但您只需依靠EF创建一个您无权访问的隐式属性。在您的帖子操作中,您需要使用数据库中的Id
查找用户,然后将ApplicationUser
属性设置为该属性。ApplicationUser
之类的内容。此外,看起来您假设所有时间的所有用户也都是&#34;贷款人员&#34;,您应该通过为贷款人员创建LoanOfficer
的子类或使用角色来计划一些灵活性分配该状态。答案 1 :(得分:0)
您是否忘记添加[HttpPost]
?
此外,您的DropDownList
可能是:
@Html.DropDownList("FullName", ViewBag.FullName, "Select Loan Officer")