ASP.NET MVC3如何将数据从GET / POST收集到模型中?

时间:2011-03-31 21:18:54

标签: data-binding post asp.net-mvc-3 binding

我已经learned about custom editor templates用于ASP.NET MVC3,现在我看到如何轻松实现自己的MVC3。但是,对于编辑器来说,它必须不仅在文本框中显示该数据,而且还以某种方式将用户编辑的内容传送到服务器进行处理。那么这种绑定如何适用于复杂模型呢? MVC如何决定每个POST值的位置?有一些神奇的命名约定吗?那些非常复杂的模型如动态列表或词典或DataTable s?

1 个答案:

答案 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也有例子。