Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC 2模型子类始终为空_C#_Asp.net_Asp.net Mvc 2 - Fatal编程技术网

C# ASP.NET MVC 2模型子类始终为空

C# ASP.NET MVC 2模型子类始终为空,c#,asp.net,asp.net-mvc-2,C#,Asp.net,Asp.net Mvc 2,我在将值从模型传递到控制器时遇到问题,假设我有两个类: 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; } } 在视图中,我为模型的子类类型的

我在将值从模型传递到控制器时遇到问题,假设我有两个类:

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; }
}
在视图中,我为模型的子类类型的属性值赋值,如下所示:

<%: Html.TextBoxFor(model => model.Value.Value1) %> 

<%: Html.TextBoxFor(model => model.Value.Value1) %>
model.Value.Value1)%>
model.Value.Value1)%>

视图仅向控制器传递模型的Name属性,Value属性始终保持为null。有什么建议吗

在控制器中,您必须获得模型:

[httpost]
public void action(Model model)
{
   //get your subClass values
    string s = model.Value.Value1;         
}

在控制器中,您必须获得以下模型:

[httpost]
public void action(Model model)
{
   //get your subClass values
    string s = model.Value.Value1;         
}

这是因为默认情况下,MVC模型绑定器不会通过post将(复杂的,即非基本类型)子类型传递回控制器。您的属性
公共子类值{get;set;}
是一个复杂类型(您编写的类称为SubClass)

您需要为此编写一个自定义模型绑定器,以告诉MVC如何将子类与您的模型一起发布。这里有一些关于自定义模型绑定的优秀文章,可以帮助您找到需要的地方


这是因为默认情况下,MVC模型绑定器不会通过post将(复杂的,即非基本类型)子类型传递回控制器。您的属性
公共子类值{get;set;}
是一个复杂类型(您编写的类称为SubClass)

您需要为此编写一个自定义模型绑定器,以告诉MVC如何将子类与您的模型一起发布。这里有一些关于自定义模型绑定的优秀文章,可以帮助您找到需要的地方


您是否初始化过
模型.值
?检查
请求.参数
数据是否已发送?您是否初始化过
模型.值
?检查
请求.参数
数据是否已发送?这不是真的。默认的模型绑定器不仅适用于复杂类型,还适用于复杂类型的集合。看看这里:对于这样一个简单的场景,您绝对不需要编写自定义的模型绑定器。这不是真的。默认的模型绑定器不仅适用于复杂类型,还适用于复杂类型的集合。看看这里:对于这样一个简单的场景,你绝对不需要编写自定义的模型绑定器。你没有读过这个问题吗?他就是这么做的。只是
model.Value
在他的控制器操作中是空的,他问为什么是空的。你没读这个问题吗?他就是这么做的。只是在他的控制器操作中,
model.Value
为空,他问这是为什么。