我已经learned about custom editor templates对于 ASP.NET MVC3,我现在知道如何轻松实现我自己的。然而,要使编辑器正常工作,它不仅必须在文本框中显示数据,还必须以某种方式将用户编辑的内容传输到服务器进行处理。那么这种绑定(bind)如何适用于复杂模型呢? MVC 如何决定每个 POST 值的去向?有一些神奇的命名约定吗?非常复杂的模型(例如动态列表、字典或 DataTable
)怎么样?
最佳答案
有一个命名约定。例如,如果您有以下模型:
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 请求)还是作为路由值发送,对于默认模型绑定(bind)器来说并不重要。它将查看所有这些地方。
并且您永远不应该忘记,如果此默认命名约定不适合您的特定要求,您应该随意 write a custom model binder .
备注:uploading files也有这种情况.
关于data-binding - ASP.NET MVC3 如何将 GET/POST 中的数据收集到模型中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506479/