3

我正在寻找将表单作为局部视图嵌入多个页面的最佳实践。

我有一个联系表格,我希望将其嵌入到网站的多个页面中。通常,表单位于联系页面上,联系模型可以是视图模型并使用数据注释进行验证。但是,视图已经是强类型的。

如何在局部视图中创建可重复使用的表单并将其嵌入到页面中?我在网站上使用 N2,所以页面必须已经有一个强类型模型,但我愿意扩展这些对象。

4

2 回答 2

4

就个人而言,我建议使用 for Html.RenderAction() 来解决诸如此类的横切关注点。

您的联系表单的处理程序需要独立于您当前正在查看的页面而存在,因此您有 3 个选项:

  1. 手动将其添加到当前操作的响应中
  2. 通过修改 ViewState 或 ViewModel 的基本控制器手动将其添加到当前控制器的响应中
  3. 在当前视图中调用 RenderAction() HtmlHelper

在这 3 个选项中,虽然第 3 个在技术上比 1 和 2 成本更高(因为它发起了一个全新的请求),但它也是最易维护的解决方案。通过调用 RenderAction(),您可以将您的联系表单与视图的其余部分完全隔离开来,因此您不必担心将其侵入当前的控制器响应中。

于 2010-08-21T03:55:45.840 回答
0

如果局部视图的数据模型已经在主视图的模型中,则使用 RenderPartial,在其他情况下使用 RenderAction(然后局部视图的操作将自己创建其视图模型)。

于 2010-08-21T08:03:54.743 回答