2014-05-05 60 views
0

在這種情況下,我有兩個頁面,在該崗位方法首先我回到了第二的視圖/視圖模型像這樣:現在MVC模型綁定,初始模型缺少

[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); 
    } 

,在這種情況下,第2頁從(點1)正確呈現上面從GrabDataMethod傳入的所有值。但是,當我爲頁2 POST時,我在(點2)收到的Page2模型沒有任何原始條目,例如沒有被Page2直接修改的所有東西都是null或默認的(事實上,post方法中的模型似乎完全是一個新模型)。我暫時做了一個可怕的解決方法,但我需要一個適當的解決方法,是否有任何理由會發生這種情況?

第二頁查看代碼

@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

什麼是Page1Model? Page2Model與Page1Model相同嗎?如果您將不同的模型發佈到同一個動作,這將無法正確綁定。 – Fals

+0

@Fals我不清楚所涉及的兩個操作,爲有希望的清晰度做了更新 –

+0

您是否也有查看示例代碼發佈到Page2操作? – Kunukn

回答

0

的Beginform在裏面你應該添加@Html.HiddenFor(model => model.Something)其中的東西是要重新站上回發的屬性。

如果您不那麼屬性值將是默認值。

+0

那麼,這就解決了我的問題,我很感謝幫助。 –