我有以下结构:
public class Dummy
{
public string Name { get; set; }
public InnerDummy Dum { get; set; }
}
public class InnerDummy
{
public string Name { get; set; }
}和接收Dummy的ActionResult
[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但是,当我尝试在ActionResult上获取dum.Dum.Name时,我得到的是null而不是yyy。这是一个bug,还是它本来的样子?我是不是用错了?我需要为此实现一个新的绑定器吗?
发布于 2011-05-12 10:40:17
您好~您的视图应该使用@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");
}如果您对此有任何问题,请告诉我:)
发布于 2011-05-12 10:20:14
您需要从Dummy类内部取出InnerDummy。
当默认模型绑定器找到Dum属性时,它将尝试创建一个InnerDummy类型的对象,但在其上下文中并不存在。要引用现有的InnerDummy,模型绑定器需要创建一个Dummy.InnerDummy,但它无法知道这一点。
使InnerDummy成为名称空间的直接成员可以解决这个问题。
也可以通过将Dum声明为:
public Dummy.InnerDummy Dum { get; set; }不过,我对此并不确定。
https://stackoverflow.com/questions/5972631
复制相似问题