1
5
因为它不受开箱即用的支持。Afaik的原因是,支持此功能的dataAnnotations属性位于.NET 4.0中,为了使MVC 3.5和4.0兼容,必须排除它们。 解决此问题的最简单方法是实现您自己的编辑/显示属性,如此问题/答案中所示: Showing Different fields in EditorForModel vs. DisplayForModel modes in MVC2 |
2
5
您要应用它的属性类型是什么?如果使用Reflector,我们可以发现ShowForEdit和ShowForDisplay属性用于以下函数: showforedit:system.web.mvc.html.defaulteditoremplates.shouldshow(…) showForDisplay:system.web.mvc.html.defaultDisplayTemplates.shouldshow(…) 这些方法的定义是:
忽略明显的属性检查(metadata.showforx),您可以看到它正在检查模型是否是EntityState的实例(可能不是),然后检查metadata.iscomplextype。 我们可以在这里查看iscomplextype属性:
这意味着,如果无法从字符串转换模型,它将返回true;在shouldshow()方法中,它将显示模型是否为复杂类型,即,可以从字符串转换值。 您需要做的是创建一个可以将字符串转换为模型的类型转换器,例如: 模型:
和转换器:
有了它,再试一次,看看是否有帮助。 |