-1
我的模型:Asp.net MVC - 查看到控制器,列表<model>为空
public class AdminPageModel
{
public int? JobID { get; set; }
[DisplayName("Description")]
public string Description { get; set; }
[DisplayName("Weight")]
public decimal Weight { get; set; }
public int ID { get; set; }
}
表1:
using (Html.BeginForm("EditTemplate", "Config", FormMethod.Post, new { @class = "form-horizontal" }))
{
for (var i = 0; i < Model.Count; i++)
{
<div class="form-group">
@if (Model[i].JobID != null)
{
@Html.LabelFor(m => m[i].Description)
@Html.TextBoxFor(m => m[i].Description)
@Html.LabelFor(m => m[i].Weight)
@Html.TextBoxFor(m => m[i].Weight)
@Html.HiddenFor(m => m[i].ID)
@Html.HiddenFor(m => m[i].JobID)
<br />@Html.ActionLink("Delete", "DeleteTemplate", new { id = @Model[i].ID, jobID = selectedJobID })
}
</div>
}
<input type="submit" value="Update" class="btn btn-success" id="editSubmit" />
}
表2:
using (Html.BeginForm("EditCompetency", "Config", FormMethod.Post, new { @class = "form-horizontal" }))
{
for (var i = 0; i < Model.Count; i++)
{
<div class="form-group">
@if (Model[i].JobID == null)
{
@Html.LabelFor(m => m[i].Description)
@Html.TextBoxFor(m => m[i].Description)
@Html.LabelFor(m => m[i].Weight)
@Html.TextBoxFor(m => m[i].Weight)
@Html.HiddenFor(m => m[i].ID)
@Html.HiddenFor(m => m[i].JobID)
<br />@Html.ActionLink("Delete", "DeleteCompentency", new { id = @Model[i].ID})
}
</div>
}
<input type="submit" value="Update" class="btn btn-success" id="editSubmit" />
}
控制器:
[HttpPost]
public ActionResult EditCompetency(List<AdminPageModel> modelList)
{
// stuff
}
[HttpPost]
public ActionResult EditTemplate(List<AdminPageModel> modelList)
{
// stuff
}
这是问题所在。我有模板和能力。我可以整天添加/删除。尝试编辑时遇到问题。
模板没有问题,只有能力。如果我添加了一个能力并且没有模板存在,那么编辑工作得很好。但是,如果我在尝试编辑能力时存在模板,则List<AdminPageModel> modelList
(我的视图被强制键入的类型)为空。如果我删除了模板,我可以将该能力编辑到我的心中。我今天早上花了一大块时间在这个上做了些调整。
这两种形式都在同一页上?如果他们是那么你将有相同的名称和ID控制,这可能会以几种不同的方式导致问题。 – sam2929
他们确实在同一页面上。 –
你可以尝试把它们放在不同的页面上吗?或者,也可以让页面的视图模型包含两个列表:一个用于模板,另一个用于Compentencies。然后将这两个列表绑定到适当的表单。现在你基本上将相同的数据绑定到两种形式。如果这对你没有意义,我可以在答案中写出一些代码。 – sam2929