[英]Bind value to complex Type
我有一個類似下面的模型:
public class TestModel{
public IList<Field> Fields {get; set;}
}
public class Field{
public String Key {get; set;}
public String Value {get; set;}
}
我如何制作相應的視圖表單,以便在發布請求后正確綁定模型? 用戶應該能夠選中具有復選框的各個字段,並且模型應該包含所選的字段。 在下面的Action方法中,Model的成員為null。
public ActionResult XY(TestModel model){[...]}
我已經為您的模型添加了一個Selected
屬性
我添加了一個EditorTemplate
來顯示一個Field
現在當你提交時會發生什么,所有項目都會被發送,你可以過濾所有具有Selected=true
屬性的項目
該模型
public class TestModel
{
public IList<Field> Fields { get; set; }
}
public class Field
{
public String Key { get; set; }
public String Value { get; set; }
public bool Selected { get; set; }
}
Controller [TestController.cs]
public ActionResult Index()
{
var testModel = new TestModel();
testModel.Fields = new List<Field>
{
new Field { Key = "Choice 1" , Selected = true , Value = "1"},
new Field { Key = "Choice 2" , Selected = false , Value = "2"},
new Field { Key = "Choice 3" , Selected = false , Value = "3"}
};
return View(testModel);
}
[HttpPost]
public ActionResult XY(TestModel model)
{
var selectedFields = model.Fields.Where(f => f.Selected);
/** Do some logic **/
return View();
}
視圖 [/Views/Test/Index.cshtml]
@model MvcApplication2.Models.TestModel
@using(@Html.BeginForm("XY","Test"))
{
@Html.EditorFor(m => m.Fields)
<input type="submit" value="submit"/>
}
編輯模板 [/Views/Test/EditorTemplates/Field.cshtml]
@model MvcApplication2.Models.Field
<label>
@Html.CheckBoxFor(m =>m.Selected)
@Model.Key
</label>
@Html.HiddenFor(m =>m.Value)
@Html.HiddenFor(m =>m.Key)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.