ASP.NET MVC 2模型子类始终为null
本文关键字:null 子类 模型 NET MVC ASP | 更新日期: 2023-09-27 18:21:33
我在将值从模型传递到控制器时遇到了问题,假设我有两个类:
public class Model
{
public string Name { get; set; }
public SubClass Value { get; set; }
}
public class SubClass
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}
在视图中,我为模型的SubClass类型的属性值赋值,如下所示:
<%: Html.TextBoxFor(model => model.Value.Value1) %>
<%: Html.TextBoxFor(model => model.Value.Value1) %>
视图只向控制器传递Model的Name属性,Value属性始终为null。有什么建议吗?
这是因为默认情况下,MVC模型绑定器不会在post上将(复杂的,即非基元类型)子类型传递回控制器。您的属性public SubClass Value { get; set; }
是一个复杂类型(您编写的一个名为SubClass的类)。
您需要为此编写一个自定义的模型绑定器,告诉MVC如何将子类与模型一起发布回来。这里有一些关于自定义模型绑定的好文章,可以帮助您达到需要的位置
http://odetocode.com/Blogs/scott/archive/2009/04/27/12788.aspx
http://odetocode.com/Blogs/scott/archive/2009/05/05/12801.aspx
在您的控制器中,您必须获得型号:
[httpost]
public void action(Model model)
{
//get your subClass values
string s = model.Value.Value1;
}