我有以下结构:

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.NameActionResult 我明白了 null 代替 yyy. 。这是一个错误还是就是这样?是不是我用的不对?我需要为此实现一个新的活页夹吗?

有帮助吗?

解决方案

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");
}

如果您有任何问题,请告诉我:)

其他提示

你需要拉 InnerDummy 从里面出来 Dummy 班级。

当默认模型绑定器找到 Dum property 它将尝试创建一个类型的对象 InnerDummy, ,但在其上下文中并不存在。供参考 InnerDummy 正如你所拥有的,模型绑定器需要创建一个 Dummy.InnerDummy, ,但它无法知道这一点。

制作 InnerDummy 命名空间的直接成员将解决该问题。

也可以通过声明来解决问题 Dum 作为:

public Dummy.InnerDummy Dum { get; set; }

不过我对此并不确定。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top