繁体   English   中英

为什么我们还需要在HttpPost Action中传递SelectList的ViewBag呢?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM