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。有什么建议吗?

ASP.NET MVC 2模型子类始终为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;         
}