C# 如何使用运行时生成的描述/值创建MVC4复选框列表
我想创建一个表单,显示一些复选框列表以及一些其他字段,这些列表的值和文本在运行时确定 我遇到了这样一种情况:我可以更新模型的bool属性,但是一旦发布表单,其他属性就会被清空 我相信有一个简单的解决办法,但我似乎找不到C# 如何使用运行时生成的描述/值创建MVC4复选框列表,c#,asp.net-mvc-4,mvc-editor-templates,asp.net-mvc-viewmodel,C#,Asp.net Mvc 4,Mvc Editor Templates,Asp.net Mvc Viewmodel,我想创建一个表单,显示一些复选框列表以及一些其他字段,这些列表的值和文本在运行时确定 我遇到了这样一种情况:我可以更新模型的bool属性,但是一旦发布表单,其他属性就会被清空 我相信有一个简单的解决办法,但我似乎找不到 public class MainModel { public List<CheckboxModel> Checkboxes { get; set;} public MainModel() { this.Checkboxes = Initial
public class MainModel
{
public List<CheckboxModel> Checkboxes { get; set;}
public MainModel()
{
this.Checkboxes = InitializeMethod(); // populates both description and selected for a bunch of boxes.
}
}
public class CheckboxModel
{
public String Description { get; set; } // This field is null when I get the model back in the HttpPost request
public bool Selected { get; set; }
}
公共类main模型
{
公共列表复选框{get;set;}
公共模型()
{
this.Checkboxes=InitializeMethod();//为一组框填充说明和选择项。
}
}
公共类CheckboxModel
{
公共字符串描述{get;set;}//当我在HttpPost请求中获取模型时,此字段为空
已选择公共布尔值{get;set;}
}
主窗体视图
@model MainModel
@{
for(var i = 0; i < Model.Checkboxes.Count; i++)
{
@Html.EditorFor(m => m.Checkboxes[i]);
}
}
@modelmainmodel
@{
对于(变量i=0;im.checkbox[i]);
}
}
CheckboxModel编辑器视图
@model CheckboxModel
@Html.CheckBoxFor(m => m.Selected)
@Html.DisplayFor(m => m.Description)<br/>
@model CheckboxModel
@CheckBoxFor(m=>m.Selected)
@Html.DisplayFor(m=>m.Description)
您没有为Description
属性生成表单控件,因此在发布时表单数据中没有发送值。例如,您的模板应该是
@model CheckboxModel
@Html.CheckBoxFor(m => m.Selected)
@Html.DisplayFor(m => m.Description)
@Html.HiddenFor(m => m.Description)
或者使用只读文本框显示说明
旁注:你的主视图应该是
@Html.EditorFor(m => m.Checkboxes)
没有for
循环。EditorFor()
方法接受IEnumerable
,并为集合中的每个项目生成正确的html