Asp.net mvc 2 在asp.net mvc中在对象内部传递对象时的行为?

Asp.net mvc 2 在asp.net mvc中在对象内部传递对象时的行为?,asp.net-mvc-2,object,posting,Asp.net Mvc 2,Object,Posting,我相信每个人都遇到过这个问题,但我想我无论如何都会问这个问题。这就是我所拥有的- public class ABC { public int x; public int y; public XYZ obj; } public class XYZ { int x1; int y1; } public ActionResult Test1() { ABC model= new ABC(); model.x=1; model.y=2; ABC.obj= new XYZ(

我相信每个人都遇到过这个问题,但我想我无论如何都会问这个问题。这就是我所拥有的-

public class ABC
{
  public int x;
  public int y;
  public XYZ obj;
}
public class XYZ
{
 int x1;
 int y1;
}
public ActionResult Test1()
{
  ABC model= new ABC();
  model.x=1;
  model.y=2;
  ABC.obj= new XYZ();
  model.x1=12;
  obj.y2=34;
  return View(model);
}
[HttpPost]
public ActionResult Test1(ABC model)
{
 //does not get XYZ obj
}
View- 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Models.ABC>" %>
   <% using (Html.BeginForm())
   {%>
    //stuff here
        <%:Html.HiddenFor(model => model.obj)%>
   <%}%>
公共类ABC
{
公共int x;
公共智力;
公共XYZ obj;
}
公共类XYZ
{
int-x1;
int y1;
}
公共行动结果测试1()
{
ABC模型=新ABC();
模型x=1;
模型y=2;
ABC.obj=新的XYZ();
模型x1=12;
对象y2=34;
返回视图(模型);
}
[HttpPost]
公共行动结果测试1(ABC模型)
{
//不获取XYZ obj
}
视图-
//这里的东西
model.obj)%>
如果我为XYZ的字段x1和y1显式地执行隐藏字段,那么我将返回这些值。像这样-
我猜这是预期的行为,但我在这里遗漏了什么吗?

首先,您的“继承”属性是错误的。而不是

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="Models.ABC" %>

应该是

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage<Models.ABC>" %>

如果您想使用
Models.ABC
作为您的模型。另一方面,您发布的操作方法甚至不可编译,因此很难判断真正的问题可能是什么

像这样发送复合对象对我来说效果很好,所以您的实现很可能存在问题

更新

任何持久化模型属性的值都必须从编辑器页面发回,这意味着它们需要存储在表单字段中。如果页面生成器没有为这些值创建字段(我不确定是否应该创建字段-对我来说,包含嵌套对象的局部视图更有意义),则需要添加可编辑或隐藏的字段