在这个例子中我有两个页面,在第一个post方法中我返回第二个视图/ viewmodel,如下所示:
[HTTPPost]
public Task<ActionResult> Page1(Page1Model model)
{
var Page2Model = GrabDataMethod(model);
return View("Page2", Page2Model); //Point 1
}
[HTTPPost]
public Task<ActionResult> Page2(Page2Model model //Point 2)
{
var updatedModel= RunFiltersMethod(model)
return View(updatedModel);
}
现在,在这种情况下,Page2从(点1)正确渲染,上面从GrabDataMethod传递了所有值。但是,当我为Page2 POST时,我在(点2)收到的Page2Model没有原始条目,例如Page2本身没有直接修改的所有内容都是null或default(事实上,似乎post方法中的模型完全是一个新模型)。我暂时做了一个可怕的解决方法,但我需要一个适当的解决方案,有什么理由会发生这种情况吗?
第2页查看代码
@model Mvc2013.Models.Page2Model
@using (Html.BeginForm("Page2", "Controller"))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
<div class="row">
<div class="col-md-12">
@Html.Kendo().Chart(<!-- code removed, this is working -->)
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="col-md-8">
@Html.LabelFor(model => model.Prop1, new { @class = "control-label" })
</div>
<div class="col-md-4">
@Html.EditorFor(model => model.Prop1, new { @class = "control-label" })
@Html.ValidationMessageFor(model => model.Prop1)
</div>
</div>
<div class="col-md-3">
<div class="col-md-8">
@Html.LabelFor(model => model.Prop2, new { @class = "control-label" })
</div>
<div class="col-md-4">
@Html.EditorFor(model => model.Prop2, new { @class = "control-label"})
@Html.ValidationMessageFor(model => model.Prop2)
</div>
</div>
</div>
<!-- This carries on similarly for lots more attributes -->
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
答案 0 :(得分:0)
在Beginform中,你应该添加@Html.HiddenFor(model => model.Something)
,其中Something是你想要回发的属性。
如果不这样做,那么属性值将是默认值。