【发布时间】: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 => m.RatingPoints[i].RatingItemId)- 现在检查它生成的正确名称属性:) -
我会试试的,正如Ehsans下面的回答所建议的那样
标签: c# asp.net-mvc asp.net-mvc-4 model-binding