我正在尝试在创建操作中保存Identities UserID。
控制器GET请求如下:
// GET: Owners/Create
public ActionResult Create()
{
ViewBag.RegUser = User.Identity.GetUserId();
return View();
}
查看如下:
@Html.HiddenFor(model => model.RegUserID, new { @value = ViewBag.RegUser })
控制器POST请求如下:
// POST: Owners/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "OwnerID,OwnerName,ContactName,PhysicalAddress1,PhysicalAddress2,PhysicalCity,PhysicalState,PhysicalCountry,PhysicalPostCode,PostalAddress1,PostalAddress2,PostalCity,PostalState,PostalCountry,PostalPostCode,Phone,Mobile,Fax,Email,RegUserID")] Owner owner)
{
if (ModelState.IsValid)
{
db.Owners.Add(owner);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(owner);
}
但是,当保存记录时,RegUserID为空。
如果我打破了@Html Helper,则将值分配给model.RegUserID我可以在视图中看到UserID:
ViewBag.RegUser "7318611e-7e2e-4ee2-9c7b-51b20f0806d8" dynamic {string}
我做错了什么?
答案 0 :(得分:2)
为什么不创建一个空的Owner对象并发送get方法而不是像以下那样在ViewBag中传递它:
// GET: Owners/Create
public ActionResult Create()
{
Owner owner = new Owner();
owner.RegUserId = User.Identity.GetUserId();
return View(owner);
}
查看如下:
@Html.HiddenFor(model => model.RegUserID)
答案 1 :(得分:1)
在我看来,根本不添加隐藏字段。在[HttpPost] Create
内,您可以像[HttpGet] Create
中一样访问它。
// GET: Owners/Create
public ActionResult Create()
{
return View();
}
// remove RegUserID from Bind Include
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "OwnerID,OwnerName,ContactName,PhysicalAddress1,PhysicalAddress2,PhysicalCity,PhysicalState,PhysicalCountry,PhysicalPostCode,PostalAddress1,PostalAddress2,PostalCity,PostalState,PostalCountry,PostalPostCode,Phone,Mobile,Fax,Email")] Owner owner)
{
if (ModelState.IsValid)
{
owner.RegUser = User.Identity.GetUserId();
db.Owners.Add(owner);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(owner);
}
像这样的客户端无法更改RegUserID
字段。
答案 2 :(得分:0)
您无法通过HTML帮助程序为强类型帮助程序分配值。
注意:您必须将值分配给您的属性,然后将其用作隐藏字段。示例如下。
在您的视图中创建如下代码。
@{
model.RegUserID = ViewBag.RegUser;
}
然后创建一个隐藏的字段,如下所示。
@{
@Html.HiddenFor(model => model.RegUserID)
}