![]() |
1
1
啊,我明白了-我道歉。这在“技术上”是不受支持的-但是,您可以更改一个自定义属性,使用一些时髦的反射来实现相同的功能。不过,这绝对不是最佳做法。
|
![]() |
2
1
我的第一步是创建视图模型。即使这是非常类似于您的实际实体,分离是重要的。所以我要创造一个
接下来,根据不同的产品类型确定将要更改的属性。为每个产品类型创建单独的局部视图模型。这允许您控制显示哪些属性以及它们的格式。 在主产品编辑视图中,根据需要使用switch语句“交换”不同的局部视图。如果您使用AJAX,甚至可以动态地执行此操作。 在本例中,我们有许多不同的报表,它们具有不同的报表类型。报告的主要部分没有改变,只是一些不同的参数(取决于类型)。
对于每个报表类型,我们有单独的局部视图,您可以看到这些视图将根据报表类型添加到中。此代码段位于
以及总结报告部分视图:
|
![]() |
3
0
如果添加以下属性,则可以使用EditorForModel并仅显示属性的子集:
|
![]() |
4
0
创建一个自定义DataAnnotationAttribute,将ProductType作为参数。然后应用于要查看的相应属性。您可以通过为产品创建EditorTemplate来进一步扩展此功能,该产品将处理进一步的流程、表单元素的外观和感觉,或者对某些表单元素进行JQuery。 |
![]() |
5
0
我已经复习了所有的答案,并且更彻底地思考了这个问题。我采取了这样的方法
从我最初的问题。
而不是使用
干巴巴的,简单的,显式的(虽然我希望我有一个动态语言不止一次,以减少代码和摆脱一些反射…)。 |