我有一个班级
public class Citizen
{
public long ID { get; set; }
public string Name { get; set; }
public long CityID { get; set; }
public string City { get; set; }
public List<CitizenResource> Resources { get; set; }
}
我想在参考资料中编辑单个项目,但EditorFor没有正确设置输入。
@for (int i = 0; i < Model.Resources.Count; i++ )
{
@Html.BeginForm("EditResource", "Citizen")
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<div class="form-group">
<p class="form-control-static">
@Html.DisplayFor(model => model.Resources[i].Name)
</p>
<div class="col-md-10">
@Html.EditorFor(model => model.Resources[i].CurrentAmount, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Resources[i].CurrentAmount, "", new { @class = "text-danger" })
<input type="hidden" name="ResourceID" value="@Model.Resources[i].ResourceID"/>
<input type="submit" value="Update" class="btn btn-default" />
</div>
</div>
</div>
}
}
我得到的是name =&#34; Resources [0] .CurrentAmount&#34;然后,它没有正确映射到CitizenResource类。
任何人都可以帮我指出正确的方向吗?
答案 0 :(得分:0)
您的代码正在创建多个不好的表单。处理这种情况的最佳方法是使用EditorTemplates。查看此链接,了解如何操作。 EditorFor() for a List of Complex Type (MVC)
答案 1 :(得分:0)
您发送的表达式会导致该名称:
我得到的是name =“Resources [0] .CurrentAmount”,然后不映射 正确到CitizenResource类。
@Html.EditorFor(model => model.Resources[i].CurrentAmount, new { htmlAttributes = new { @class = "form-control" } })
而是有一个部分视图来编辑CitizenResource
@model CitizenResource
@using(Html.BeginForm("EditResource", "Citizen")){
{
//The complete elements
@Html.EditorFor(model => model.CurrentAmount, new { htmlAttributes = new { @class = "form-control" } })
//The rest of the elements
}}