【发布时间】:2017-07-06 21:57:57
【问题描述】:
如何阻止 ViewBag 中的值绑定到 MVC 中的控件?视图不是强类型的。
我正在使用 ViewBag 将数据表传递给视图。此数据表作为值传递给使用HtmlHelper 上的扩展方法构建的自定义控件。
视图有一些依赖于 EntityID 的逻辑,所以我使用 ViewBag 将 EntityID 传递给视图。
该控件构建了一个名为“EntityID”的隐藏字段,而不是使用我从数据集传递给 html 帮助程序的值,而是绑定到 ViewBag 中的值。
return htmlHelper.Hidden(name, value, attributes);
如何让HtmlHelper 使用我的值而不是使用 ViewBag 中的值?
当视图被渲染时会发生这种情况。
通过 Ajax GET 请求调用视图控制器,返回的视图 html 附加到 div。
GET 请求将对象发送到操作方法。该对象有一个名为 EntityID 的属性
【问题讨论】:
-
这就是
HtmHelper方法的工作方式——他们首先检查ModelState中的值,如果没有找到,然后检查ViewData,最后是模型属性。 -
@StephenMuecke 我可以构建一个隐藏的输入控制字符串,但我想知道是否有办法阻止
HtmlHelper在模型绑定期间使用 ViewBag。 -
您能否提供更多上下文 - 是在第一次呈现视图时发生这种情况,还是仅在您提交后返回视图,或者方法具有与名称匹配的参数时发生。
-
@StephenMuecke 我修改了问题以添加更多上下文。
-
生成此视图的 GET 方法是否包含名为
entityID的参数? (需要排除ModelState)。
标签: asp.net-mvc asp.net-mvc-4 model-binding