2016-04-14 16 views
1

私はSOとgoogleの利用可能なヘルプのほとんどを見てきましたが、何が間違っているのか分かりません。MVC値のリストを持つ複雑なオブジェクトをバインドする

私はモデルにいくつかのプロパティがあり、プロパティの1つは別の複雑なオブジェクトのリストです。私はこのリストにバインドすることができません!

お手数ですが、ここで

は私のモデルクラスに関連する次のとおりです。

public class PrivacyModel 
{ 
     public int RatingId { get; set; } 
     public List<RatingPoint> RatingPoints { get; set; } 
} 

public class RatingPoint 
{ 
     public int RatingItemId { get; set; } 
     public string RatingValue { get; set; } 
} 

ここに私のコードです:

[HttpPost] 
public ActionResult Index(PrivacyModel model) 
{ 
    .... my business logic.... 
} 

私の見解は次のようになります。

@using (Html.BeginForm("Index", "Privacy")) 
     { 

      <input type="hidden" name="RatingId" value="@Model.RatingId" /> 

      for (var i = 0; i < Model.RatingPoints.Count; i++) 
      { 

       var ratingPoint = Model.RatingPoints[i]; 

       <input type="hidden" name="PrivacyModel.RatingPoints[@i].RatingItemId" value="@ratingPoint.RatingItemId" /> 

       <input type="hidden" name="PrivacyModel.RatingPoints[@i].RatingValue" @("id=RatingPoints" + ratingPoint.RatingItemId) value="@ratingPoint.RatingValue" /> 
      } 
     <input class="btn" type="submit" value="Submit" /> 
    } 

値とIDのフィールドは気にしないでください。jQueryのページのどこかで正しく更新されています。

これは私に私の行動

RatingPointsのヌルリストを持って、私はPrivacyModel.RatingPoints[@i].に接頭辞PrivacyModelなくても試してみましたが、これは私に私のアクション

RatingPointsの空のリストを持って、私も試してみました非連続の項目について提案された解決策hereのよう

+0

厳密に型指定されたHtmlHelperメソッドを使用して、HTMLを生成してください。 - '@ Html.HiddenFor(m => m.RatingPoints [i] .RatingItemId)' - あなたのもので生成する正しい名前属性を検査するようになりました:) –

+0

[Ehsans](http://下のanswer answer = 36623290/mvc-binding-complex-objects-with-list-of-values/#answer-36623484) – simsim

答えて

3

をインデックスを使用して、あなたはそれが複雑な自分を作っている、あなたは、このためだけにHiddenFor()ヘルパーを使用することができます。

for (var i = 0; i < Model.RatingPoints.Count; i++) 
{ 


    @Html.HiddenFor(x=> Model.RatingPoints[i].RatingItemId) 
    @Html.HiddenFor(x=> Model.RatingPoints[i].RatingValue,new { id= "RatingPoints"+Model.RatingPoints[i].RatingItemId})  

} 

これは同じhtmlをレンダリングし、値はポストでModelに正しくバインドされます。

関連する問題