我有一个正在使用ASP.Identity创建新用户的网站。我有一个辅助表,其中包含更多用户信息,我希望在帐户注册后填充该信息。由于我已经拥有了id和电子邮件,我不需要再次要求这些,但是无法通过Create Razor页面获取第二个表单来传递数据,即使它显示在表单本身上。
当我提交“需要登录ID”时,我收到一条错误消息,那么如何让表单以userLoginId的值发布?
创建页面
var userLoginId = User.Identity.GetUserId();
<div class="form-horizontal">
<h4>nrLogins</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.LoginID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => userLoginId, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => userLoginId, "", new { @class = "text-danger" })
</div>
</div>
的LoginController
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "LoginID,Email,FirstName,LastName,DateOfBirth,Address1,Address2,Address3,Address4,Address5,PostCode,PhoneMobile,PhoneOther,UserSearchable,SiteRoleType,AccountActive,AccountCreatedDate,AccountEditedDate,AccountDeletedDate")] dbLogin dbLogin)
{
if (ModelState.IsValid)
{
db.dbLogins.Add(dbLogin);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(dbLogin);
}
谢谢!
答案 0 :(得分:1)
您需要为控件指定name属性,否则默认为您的变量名称userLoginId而不是LoginId,因此您可以执行以下操作:
@Html.EditorFor(model => userLoginId, null, "LoginId", new { htmlAttributes = new { @class = "form-control" } })
如果您不希望用户能够查看或编辑详细信息,您可以将其作为隐藏字段传递
@Html.Hidden("LoginId", userLoginId)