我已经查看了SO中的大部分可用帮助,谷歌与此相关,但我不确定我做错了什么。
我有一些属性的Model,其中一个属性是另一个复杂对象的列表。我无法绑定此列表!
请求帮助!
以下是我的Model类相关:
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
中也没有使用前缀PrivacyModel.RatingPoints[@i].
进行了尝试,但这让我在行动中找到了RatingPoints
的空列表
我还尝试在建议的解决方案here中使用类似非顺序项
的索引答案 0 :(得分: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,并且值将在模型中正确绑定。