2015-11-03 65 views
0

我有一個問題,其中默認模型聯編程序拒絕綁定到我的對象,它是簡單對象的List<>MVC默認模型聯編程序返回空對象

類:

public class ReferralHistoryDetail { 

    [Key] 
    public long Referral_Number { get; set; } 
    public Guid QuoteGuid { get; set; } 
    public byte ReferralTypeID { get; set; } 
    public string Referral_Type { get; set; } 
    public DateTime ReferralDateTime { get; set; } 
    public string ReferralComments { get; set; } 

} 

控制器定義:

[HttpPost] 
public ActionResult Save(List<ReferralHistoryDetail> details) { 

從提琴手的觀點:

The view from Fiddler

我在做什麼錯在這裏?

這是通過以下方式的EditorTemplate所示:

@using (Html.BeginForm("Save", "Home")) { 

    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <div class="tab-content"> 
     <div class="tab-pane fade in active form-horizontal" id="basic"> 
      @Html.EditorFor(m => m.ReferralHistoryDetail) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Save" class="btn btn-default" /> 
     </div> 
    </div> 

} 

被跨越未來爲NULL值是被傳遞給所述控制器的POST方法的一個。默認的模型聯編程序無法將其綁定。

+0

更可能是因爲HistoryDe​​tail與類名稱ReferralHistoryDe​​tail不匹配。 – JB06

+0

您不需要HistoryDe​​tail或ReferralHistoryDe​​tail。只是'name =「[0] .ReferralTypeID」'等將做 – Luke

+0

我正在使用EditorTemplate這個模型,並通過EditorFor <>()顯示它。 MVC正在控制其餘部分。 – Patrick

回答

0

我解決了這個問題。

問題是Html.BeginForm()是在主視圖中,但它只是從EditorFor()的回發東西。

由於Html.BeginForm()住在主視圖上,所以我不得不改變控制器以接收主視圖的對象,而不是EditorFor()正在處理的對象。