MVC模型绑定,初始模型丢失

本文关键字:初始模型 模型 绑定 MVC | 更新日期: 2023-09-27 18:02:03

在本例中,我有两个页面,在第一个页面的post方法中,我返回第二个页面的视图/视图模型,如下所示:

    [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传入的。然而,当我POST Page2的Page2Model我收到(点2)没有原始条目,例如,一切没有直接修改的Page2本身是空的或默认的(事实上,似乎从POST方法的模型是一个新的模型完全)。我暂时做了一个可怕的工作,但我需要一个适当的修复,有什么原因会发生这种情况吗?

Page2查看代码

@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>

}

MVC模型绑定,初始模型丢失

在Beginform中,你应该添加@Html.HiddenFor(model => model.Something),其中Something是你想要回发的属性。