我有3个共享一个部分(其中包含模型数据(@ Html.TextBoxFor))的屏幕。什么是实现这个屏幕的最佳方式?MVC 4重用视图和查看模型最佳实践
我尝试什么:
1)为共同的部分(_ClientData)的局部视图。 3个不同屏幕的视图。 3个具有公共属性(ClientData)的视图模型,即部分视图模型。 问题:如果我将模型传递给部分为@{Html.RenderPartial("_ClientData", Model.ClientData);}
,则来自部分的数据不会被提供给模型。 如果我将模型传递给部分为@{Html.RenderPartial("_ClientData", Model);}
并引用具有填充名称的属性,则数据将被提交,但我无法将具有不同类型的模型传递给局部视图。
2)使用一个大视图模型,包含3个屏幕所需的所有数据,一个视图和根据某个标记显示/隐藏某些元素。 问题:我无法使用ValidationAttributes(例如,如果在屏幕1中需要一个字段,但屏幕2中未显示该字段且其值为空,则验证将触发)。我可以在控制器中使用一些手动验证,但是在一个视图和视图模型中的所有内容听起来都很糟糕。
对于#1(如果我理解正确),所有3个模型都实现了相同的界面,以便您*可以*将每个模型传递给相同的局部视图。 'IHaveClientData'。该视图然后可以期待'IHaveClientData'的一个实例。 –
我会尽力谢谢。 –