Nat*_*ins 0 c# model model-binding asp.net-mvc-3
如何将这种复杂模型与包含多个对象的多个图层绑定?现在我将模型传递给视图 - (填充表单/复选框树),我想要准确的模型(SubjectSelectionModel),但它没有正确绑定.
任何人都可以详细说明我需要采取的过程,以便在我看来正确绑定这些过程吗?
查看型号:
public class SubjectSelectionModel
{
public IList<Subject> Subjects { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
学科分类:
public class Subject
{
public String Name { get; set; }
public IList<Bin> Bins { get; set; }
public Subject()
{
}
public Subject(IList<Course> courses)
{
}
}
Run Code Online (Sandbox Code Playgroud)
Bin类:
public class Bin
{
public Subject Subject { get; set; }
public int Amount { get; set; }
public IList<Foo> Foos { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Foo类:
public class Foo
{
public int Number { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是编辑器模板派上用场的地方.您可以使用简单的编辑器模板来处理所有繁琐的工作,而不是搞乱这一点.
您可以在〜/ Views/Shared/EditorTemplates中创建几个模板,然后在主视图中它应如下所示:
View.cshtml
@model SubjectSelectionModel
@using(Html.BeginForm()) {
@EditorFor(m => m.Subjects)
<input type="submit" />
}
Run Code Online (Sandbox Code Playgroud)
Subject.cshtml
@model Subject
@Html.EditorFor(m => m.Name)
@Html.EditorFor(m => m.Bins)
Run Code Online (Sandbox Code Playgroud)
Bin.cshtml(我假设你不想渲染主题,这将是一个无限循环)
@model Bin
@Html.EditorFor(m => m.Amount)
@Html.EditorFor(m => m.Foos)
Run Code Online (Sandbox Code Playgroud)
Foo.cshtml
@model Foo
@Html.EditorFor(m => m.Number)
Run Code Online (Sandbox Code Playgroud)
显然,您可能希望将html格式更改为您想要的任何内容,但实质上就是这样.
| 归档时间: |
|
| 查看次数: |
2578 次 |
| 最近记录: |