如何创建ASP.Net MVC Helper来检查表单上的其他输入

时间:2011-01-17 20:18:30

标签: asp.net-mvc html-helper

我想创建一个带有以下签名的扩展助手:

  • public static MvcHtmlString BindMissingFor(这个HtmlHelper htmlHelper,Expression>表达)

我希望这个方法能够通过提供的表达式模型进行反映,并查找尚未在表单上绑定的可绑定属性。

用例是我希望有一些只允许用户与我的模型的一部分进行交互的视图。但是,我想在多个视图(向导)之间保留整个模型。

我目前的解决方案是为每个我不想显示的字段使用隐藏输入。我可能会对这种扩展方法做同样的事情,但我希望它能为我做的工作而不是复制/粘贴。

有没有办法在HtmlHelper扩展方法中检查输入/选择的当前表单?

1 个答案:

答案 0 :(得分:1)

html帮助器无法知道视图的其他部分会发生什么,例如检查其他表单字段,除非您将其作为参数传递。此外,寻找尚未绑定在表单上的可绑定属性并不是很明确。要在向导中保持状态,您可以查看当前位于MVC Futures程序集中的Html.Serialize帮助程序。这个帮助器背后的想法是,它允许您将一些模型对象(标记为[Serializable])序列化为表单内的隐藏字段,并使用[Deserialize]属性将其值返回到控制器操作中。在幕后它使用WebForms ViewState。你也可以加密它。这是在多个页面之间在客户端上保持状态的好方法。