首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认ModelBinder无法正常工作

默认ModelBinder无法正常工作
EN

Stack Overflow用户
提问于 2011-05-12 10:14:46
回答 2查看 429关注 0票数 0

我有以下结构:

代码语言:javascript
复制
public class Dummy
{
    public string Name { get; set; }

    public InnerDummy Dum { get; set; }
}

public class InnerDummy
{
    public string Name { get; set; }
}

和接收DummyActionResult

代码语言:javascript
复制
[HttpPost]
public ActionResult Index(Dummy dum)
{
    var dsad = dum;
    //var dwss = idum;

    return RedirectToAction("index");
}

在我看来,我有:

代码语言:javascript
复制
@model TestMVC3Razor.Controllers.HomeController.Dummy
@using (Html.BeginForm())
{
    @Html.TextBoxFor(o => o.Name)
    @Html.EditorFor(o => o.Dum)

    <br />
    <br />
    <input type="submit" />
}

它正在张贴

代码语言:javascript
复制
Name=xxx
Dum.Name=yyy

但是,当我尝试在ActionResult上获取dum.Dum.Name时,我得到的是null而不是yyy。这是一个bug,还是它本来的样子?我是不是用错了?我需要为此实现一个新的绑定器吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-12 10:40:17

您好~您的视图应该使用@Html.EditorFor(o => o.Dum.Name)

不是@Html.EditorFor(o => o.Dum)

和回发控制器:

代码语言:javascript
复制
[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");
}

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

票数 2
EN

Stack Overflow用户

发布于 2011-05-12 10:20:14

您需要从Dummy类内部取出InnerDummy

当默认模型绑定器找到Dum属性时,它将尝试创建一个InnerDummy类型的对象,但在其上下文中并不存在。要引用现有的InnerDummy,模型绑定器需要创建一个Dummy.InnerDummy,但它无法知道这一点。

使InnerDummy成为名称空间的直接成员可以解决这个问题。

也可以通过将Dum声明为:

代码语言:javascript
复制
public Dummy.InnerDummy Dum { get; set; }

不过,我对此并不确定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5972631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档