Asp.net-Mvc
如何將列表從視圖傳遞到控制器
將對像中的列表從視圖傳遞到控制器時出現問題,列表始終為空。我該怎麼做?
我的模型:
public class ImageModel { public int id { get; set; } public string url { get; set; } public bool delete { get; set; } } public class SchoolImages { public Nullable<int> schoolid { get; set; } public IList<ImageModel> images; }風景:
@model SchoolAppManager.Models.SchoolImages @using (Html.BeginForm("DeleteImages", "Images")) { @Html.HiddenFor(x => x.schoolid) <table> @for (int i = 0; i < Model.images.Count(); i += 4) { <tr> <td> <img src="@Url.Content(Model.images[i].url)" width="50%" /> <br /> @Html.CheckBoxFor(x => x.images[i].delete) @Html.HiddenFor(x => x.images[i].id) </td> <td> @if (i + 1 < Model.images.Count()) { <img src="@Url.Content(Model.images[i + 1].url)" width="50%" /> <br /> @Html.CheckBoxFor(x => x.images[i + 1].delete) @Html.HiddenFor(x => x.images[i + 1].id) } </td> <td> @if (i + 2 < Model.images.Count()) { <img src="@Url.Content(Model.images[i + 2].url)" width="50%" /> <br /> @Html.CheckBoxFor(x => x.images[i + 2].delete) @Html.HiddenFor(x => x.images[i + 2].id) } </td> <td> @if (i + 3 < Model.images.Count()) { <img src="@Url.Content(Model.images[i + 3].url)" width="50%" /> <br /> @Html.CheckBoxFor(x => x.images[i + 3].delete) @Html.HiddenFor(x => x.images[i + 3].id) } </td> </tr> } </table> <input type="submit" value="delete" /> }當我點擊刪除時,
SchoolImages傳遞給控制器,在控制器中SchoolImages.schoolId有值,但是,SchoolImages.images為空。我怎樣才能傳遞SchoolImages.images給控制器?
預設模型綁定器不適用於欄位,因此請創建
images一個屬性:public IList<ImageModel> images { get; set; }
我猜你在將復雜類型綁定到你的模型時會遇到問題。萬一你沒有得到那個工作。這是另一種方法。
您有一堆複選框,可能具有相同的名稱和不同的值。您可以將它們發佈到採用 FormCollection 的方法,即。
public ActionResult Test(FormCollection collection) { string results = collection["Blanks"]; }這將為您提供一個以逗號分隔的值列表(或 null,其中沒有勾選複選框)。
或者,如果您在伺服器上有可能的值作為數組,那麼您可以根據它們的數組值為複選框命名,這意味著您可以執行以下操作:
@using (Html.BeginForm("Test","Home")) { @Html.CheckBox("Blanks[0]", false); @Html.CheckBox("Blanks[1]", false); @Html.CheckBox("Blanks[2]", false); <input type="submit" value="Submit" /> }在您的測試方法中為您提供一個布爾數組:
公共 ActionResult 測試(布爾
$$ $$空白){ }