我有两个课程MyClassA
和MyClassB
:
public class MyClassA
{
public int Age { get; set; }
public string Name { get; set; }
}
public class MyClassB
{
public IEnumerable<MyClassA> Data { get; set; }
}
现在,我想创建自定义强类型html帮助程序,以生成名称来自集合MyClassA
的文本框,如下所示:
@model MyClassB
@Html.MyTextBoxFor(p => p.MapFrom(o => o.Age))
@Html.MyTextBoxFor(p => p.MapFrom(o => o.Name))
...输出:
<input type="text" name="Age" />
<input type="text" name="Name" />
我怎样才能做到这一点?
PS。我知道,我可以这样写:
@Html.TextBoxFor(p => p.Data.First().Name)
但感觉如此错误和不优雅...... 有任何想法吗?
答案 0 :(得分:3)
让我确保我理解正确...您要为Name
Age
属性MyClassA
创建Data
和MyClassB
的文本框}}。如果是这样,那么编辑模板就可以了。
创建/Views/Shared/EditorTemplates/MyClassA.cshtml
@model MyClassA
@Html.TextBoxFor(m => m.Name)
@Html.TextBoxFor(m => m.Age)
然后在你看来:
@model MyClassB
@Html.EditorFor(m => m.Data)