-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