![]() |
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()方法中,它将显示模型是否为复杂类型,即,可以从字符串转换值。 您需要做的是创建一个可以将字符串转换为模型的类型转换器,例如: 模型:
和转换器:
有了它,再试一次,看看是否有帮助。 |
![]() |
Mike · html助手-我如何摆脱name属性? 10 年前 |
|
user3902826 · 显示mvc2视图 10 年前 |
![]() |
Baxter · 将带有List<T>的视图模型发布到控制器操作方法 10 年前 |
![]() |
yoozer8 · 将类应用于某些链接文本 12 年前 |