.NET MVC 3强类型表单助手没有将数据传递给操作?

时间:2012-05-25 04:05:16

标签: asp.net-mvc razor

我有一个Model Wrapper类包装另一个模型:

public class LogicPage {
    public MyPage Pg { get; set; }
}

public class MyPage {
     public string name { get; set; }
}

在我的创建表单视图中,我使用强类型表单帮助程序:

@model MyAppCore.Components.LogicPage
@using (Html.BeginForm("Create","PageAdmin",FormMethod.Post)) {
     <div class="editor-field">
     @Html.EditorFor(model => model.Pg.name)
     @Html.ValidationMessageFor(model => model.Pg.name)
 </div>
 ...
}

在我的控制器中,我将操作定义为:

[HttpPost]
public ActionResult Create(LogicPage logicpg)
{
   return View("View",logicpg.Pg);
}

然而,当MyPage Pg显示在&#34; View&#34;其中列出了模型的详细信息(MyPage),没有显示用户输入的数据,显示的页面的详细信息都是MyPage默认值(默认情况下初始化为LogicPage的参数构造函数)。看起来表单中的数据没有传递给动作中的模型。有人可以帮我解释为什么数据没有通过吗?

为了澄清更多,我有两个观点&#34;创建&#34;模型LogicPage的形式视图和&#34; View&#34;模型MyPage的详细视图

Create.cshtml

@model MyAppCore.Components.LogicPage

View.cshtml

@model MyAppCore.Components.MyPage

由于

1 个答案:

答案 0 :(得分:0)

你说你在做什么

[HttpPost]
public ActionResult Create(LogicPage logicpg)
{
   return View("View",logicpg.Pg);
}

但是假设MyPage没有从LogicPage继承,并且你的视图需要一个LogicPage实例,我认为你应该这样做:

[HttpPost]
public ActionResult Create(LogicPage logicpg)
{
   return View("View",logicpg);
}