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
作为您的模型。另一方面,您发布的操作方法甚至不可编译,因此很难判断真正的问题可能是什么
像这样发送复合对象对我来说效果很好,所以您的实现很可能存在问题
更新
任何持久化模型属性的值都必须从编辑器页面发回,这意味着它们需要存储在表单字段中。如果页面生成器没有为这些值创建字段(我不确定是否应该创建字段-对我来说,包含嵌套对象的局部视图更有意义),则需要添加可编辑或隐藏的字段