我有以下结构:
public class Dummy
{
public string Name { get; set; }
public InnerDummy Dum { get; set; }
}
public class InnerDummy
{
public string Name { get; set; }
}
收到ActionResult
Dummy
[HttpPost]
public ActionResult Index(Dummy dum)
{
var dsad = dum;
//var dwss = idum;
return RedirectToAction("index");
}
根据我的观点,我有:
@model TestMVC3Razor.Controllers.HomeController.Dummy
@using (Html.BeginForm())
{
@Html.TextBoxFor(o => o.Name)
@Html.EditorFor(o => o.Dum)
<br />
<br />
<input type="submit" />
}
发布
Name=xxx
Dum.Name=yyy
但是,当我尝试dum.Dum.Name
ActionResult
时,我得到null
而不是yyy
。这是一个错误还是只是它的方式?我没用过它吗?我是否需要为此实施新的活页夹?
答案 0 :(得分:2)
HI~您的观点应该使用@Html.EditorFor(o => o.Dum.Name)
不是@Html.EditorFor(o => o.Dum)
回发控制器:
[HttpPost]
public ActionResult Index(Dummy postback)
{
var dsad = postback;
var a = postback.Name; //get Name of Dummy
var b = postback.Dum.Name; //get Name of InnerDummy of Dummy
return RedirectToAction("index");
}
如果您有任何问题,请告诉我:)
答案 1 :(得分:0)
您需要从InnerDummy
课程中拉出Dummy
。
当默认模型绑定器找到Dum
属性时,它将尝试创建类型为InnerDummy
的对象,但在其上下文中不存在。要提到InnerDummy
,模型绑定器需要创建Dummy.InnerDummy
,但无法知道。
使InnerDummy
成为命名空间的直接成员将解决问题。
也可以通过将Dum
声明为:
public Dummy.InnerDummy Dum { get; set; }
但是,我不确定这一点。