EditorFor在ASP.NET MVC 3.0中没有获得正确的编辑器

问题描述

|| 我遇到一种情况,想将自定义
EditorTemplate
viewmodel一起使用。所以我有我的viewmodel ...
class Aspect {
}
class Aspectviewmodel {
}
然后我的EditorTemplate 观看次数 共享 编辑器模板 Aspect.cshtml Aspect.cshtml @model Aspectviewmodel //其他html 然后在另一个
Aspectviewmodel
的视图中,我称
@Html.EditorFor(model => model)
,但它不起作用。仅当我使用硬编码字符串“ 4”时才有效。 知道为什么不被调用吗?     

解决方法

如果编辑器模板的类型为
AspectViewModel
,则应将其命名为
AspectViewModel.cshtml
。然后,您要做的就是:
@model AspectViewModel
@Html.EditorForModel()
要么
@model SomeViewModel
@Html.EditorFor(x => x.Aspect)
其中
SomeViewModel
Aspect
属性为
AspectViewModel
类型。 约定是,应将编辑器/显示命名为调用它的属性的类型,而不是此属性的名称。 它们也非常适合收藏。例如,如果您具有以下属性:
public class SomeViewModel
{
    public IEnumerable<AspectViewModel> Aspects { get; set; }
}
而您使用:
@model SomeViewModel
@Html.EditorFor(x => x.Aspects)
然后将为该集合的每个元素呈现“ 14”编辑器模板。因此,您实际上不再需要在视图中编写
for
/
foreach
循环。     ,这是因为您的模型是
AspectViewModel
,但是视图名称是
Aspect
。它们必须完全匹配。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...