MVC 4重用视图和查看模型最佳实践



我有3个屏幕共享一个部分(其中包含模型数据(@html.textboxfor))。实施此屏幕的最佳方法是什么?

我尝试的是:

1)公共部分的部分视图(_ClientData)。3个不同屏幕的视图。3具有共同属性(客户端数据)的视图模型,即部分的视图模型。问题:如果我将模型传递给部分,则因为@{Html.RenderPartial("_ClientData", Model.ClientData);},该部分的数据不会将其提交给模型。如果我将模型作为@{Html.RenderPartial("_ClientData", Model);}传递给部分,并用填充名称引用数据提交数据,但是我无法将具有不同类型的模型传递给部分视图。

2)使用一个大视图模型,其中包含3个屏幕所需的所有数据,一个视图,并根据某些标志显示/隐藏某些元素。问题:我不能使用验证attributes(例如,如果在屏幕1中需要一个字段,但是它在屏幕2中未显示,其值为null,则验证将触发)。我可以在控制器中使用一些手动验证,但是在一个视图中,整个过程听起来很糟糕。

部分通常不是最好的选择,以防您要将它们放在一个表单中并一起提交。在这种情况下,最好利用EditorTemplates来解决您的问题。

首先,您必须将部分拖到文件夹~/Shared/EditorTemplates/并重命名它们以匹配模型名称。

然后,您可以像这样在视图中调用它们:

Html.EditorFor(model => model.ClientData)

因此,您的HTML代码(确切的name属性)将以您的默认模型粘合剂也能够绑定视图的这一部分的方式生成。

最新更新