【问题标题】:MVC Binding complex objects with list of valuesMVC 使用值列表绑定复杂对象
【发布时间】:2016-04-14 20:42:32
【问题描述】:

我查看了 SO 和 google 中与此相关的大部分可用帮助,但我不确定我做错了什么。

我有一些属性的模型,其中一个属性是另一个复杂对象的列表。我无法绑定此列表!

请帮忙!

这是我的模型类相关:

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" />
     }

请不要介意 value 和 id 字段,它们正在由我页面某处的 jQuery 正确更新。

这在我的操作中得到了一个 RatingPoints 的空列表

我也尝试过在PrivacyModel.RatingPoints[@i]. 中不使用前缀PrivacyModel,但这让我在操作中得到了RatingPoints 的空列表

我也尝试过在建议的解决方案here 中对非顺序项使用索引

【问题讨论】:

  • 始终使用强类型的 HtmlHelper 方法来生成您的 html。 - @Html.HiddenFor(m =&gt; m.RatingPoints[i].RatingItemId) - 现在检查它生成的正确名称属性:)
  • 我会试试的,正如Ehsans下面的回答所建议的那样

标签: c# asp.net-mvc asp.net-mvc-4 model-binding


【解决方案1】:

你自己让它变得复杂,你可以使用HiddenFor() helper:

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,并且值将在发布时正确绑定到模型中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多