我已经learned about custom editor templates用于ASP.NET MVC3,现在我看到如何轻松实现自己的MVC3。但是,对于编辑器来说,它必须不仅在文本框中显示该数据,而且还以某种方式将用户编辑的内容传送到服务器进行处理。那么这种绑定如何适用于复杂模型呢? MVC如何决定每个POST值的位置?有一些神奇的命名约定吗?那些非常复杂的模型如动态列表或词典或DataTable
s?
答案 0 :(得分:3)
有一个命名约定。例如,如果您有以下型号:
public class Foo
{
public Bar Bar { get; set; }
}
public class Bar
{
public string Baz { get; set; }
}
以及以下行动:
public ActionResult Index(Foo foo) { ... }
您可以发送以下请求:
/home/index?Bar.Baz=somevalue
以设置Baz值。当然,这将自动实例化Foo模型及其Bar属性。显然,这个约定也适用于lists and dictionaries。
值是在查询字符串(GET请求)中发送,作为表单值(POST请求)还是作为路由值,它对于默认模型绑定器并不重要。它会查看所有这些地方。
您永远不应忘记,如果此默认命名约定不符合您的特定要求,您可以随意write a custom model binder。
备注:uploading files也有例子。