2017-02-17 65 views
0

如何阻止ViewBag中的值绑定到MVC中的控件?该视图不是强类型的。模型绑定中使用的ViewBag

我使用ViewBag将数据表传递给视图。这个数据表被作为值传递给使用HtmlHelper上的扩展方法构建的自定义控件。

视图有一些依赖于EntityID的逻辑,所以我使用ViewBag将EntityID传递给视图。

控件构建了一个名为'EntityID'的隐藏字段,而不是使用我从数据集传递给html助手的值,而是绑定到ViewBag中的值。

return htmlHelper.Hidden(name, value, attributes); 

我如何获得HtmlHelper来使用我的值而不是使用ViewBag中的内容?

当渲染视图时会发生这种情况。

通过Ajax GET请求对View的控制器进行调用,并将返回的视图html附加到div

GET请求将对象发送到操作方法。该对象有一个名为ENTITYID

+0

那就是'HtmHelper'methods的工作方式 - 他们首先检查'ModelState'中的值,如果找不到,则检查'ViewData',最后检查model属性。 –

+0

@StephenMuecke我可以建立一个隐藏的输入控制字符串,但我想知道是否有办法阻止'HtmlHelper'在模型绑定过程中使用ViewBag。 – Developer

+0

您可以提供更多的上下文 - 这是在视图第一次呈现时发生,还是仅在您提交后返回视图,或者该方法的参数与名称匹配时才会发生。 –

回答

0

你不能限制太多关于HTML佣工的内部工作属性,但你总是可以呈现自己:

<input type="hidden" name="@Html.NameFor(m => m.EntityID)" value="@Model.EntityID" />