[英]Why does SelectList SelectedValue work on HttpGet but not on HttpPost?
[英]Why do we need to pass the ViewBag of SelectList in HttpPost Action too?
我有一个存储在ViewBag中的选择列表项。 我不明白为什么我们应该在HttpGet和HttpPost操作中声明这个ViewBag?
如果我们不在HttpPost操作中再次声明它,则验证将不起作用,我们将获得异常。 但这在技术上是如何发生的?
@Html.DropDownListFor(m => m.CategoryId, (IEnumerable<SelectListItem>)ViewBag.Categories, "Select Category", new { @class = "form-control" })
列表:
@Html.DropDownListFor(m => m.CategoryId, (IEnumerable<SelectListItem>)ViewBag.Categories, "Select Category", new { @class = "form-control" })
从HttpPost Action中删除ViewBag时引发的异常。 我想知道为什么
key = CategoryId? 这个关键是如何工作的?
截图:
你可能会过度思考它。 简单地考虑一下......
这两个操作都返回相同的视图:
public ActionResult New()
{
//...
return View();
}
该视图使用ViewBag
的值:
(IEnumerable<SelectListItem>)ViewBag.Categories
为了使视图使用该值,该值必须位于ViewBag
。 因此,返回该视图的任何操作都需要填充该值。 这就是为什么在不填充该值时会出现错误的原因。 该错误告诉您正在尝试使用不存在的ViewBag
值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.