【问题标题】:ASP.Net MVC reusable form as RenderAction or RenderPartialASP.Net MVC 可重用表单作为 RenderAction 或 RenderPartial
【发布时间】:2010-08-21 03:17:33
【问题描述】:
我正在寻找将表单作为局部视图嵌入多个页面的最佳做法。
我希望将一个联系表单嵌入到网站的多个页面中。通常,表单位于联系页面上,联系模型可以是视图模型并使用数据注释进行验证。但是,视图已经是强类型的。
如何在局部视图中创建可重复使用的表单并将其嵌入到页面中?我在网站上使用 N2,所以页面必须已经有一个强类型模型,但我愿意扩展这些对象。
【问题讨论】:
标签:
asp.net-mvc
forms
asp.net-mvc-partialview
renderaction
【解决方案1】:
就我个人而言,我建议使用 for Html.RenderAction() 来处理诸如此类的横切关注点。
您的联系表单的处理程序需要独立于您当前查看的页面而存在,因此您有 3 个选项:
- 手动将其添加到响应中
当前操作
- 手动将其添加到响应中
电流控制器通过一个
修改的基本控制器
ViewState 或 ViewModel
- 调用 RenderAction()
当前视图内的 HtmlHelper
在这 3 个选项中,虽然第 3 个在技术上比 1 和 2 成本更高(因为它发起了一个全新的请求),但它也是最易于维护的解决方案。通过调用 RenderAction(),您可以将您的联系表单与视图的其余部分完全隔离开来,因此您不必担心将其侵入当前的控制器响应中。
【解决方案2】:
如果局部视图的数据模型已经在主视图的模型中,则使用 RenderPartial,在其他情况下使用 RenderAction(然后局部视图的操作将自己创建其视图模型)。