我有一个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
由于
答案 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);
}