Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用运行时生成的描述/值创建MVC4复选框列表_C#_Asp.net Mvc 4_Mvc Editor Templates_Asp.net Mvc Viewmodel - Fatal编程技术网

C# 如何使用运行时生成的描述/值创建MVC4复选框列表

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

我想创建一个表单,显示一些复选框列表以及一些其他字段,这些列表的值和文本在运行时确定

我遇到了这样一种情况:我可以更新模型的bool属性,但是一旦发布表单,其他属性就会被清空

我相信有一个简单的解决办法,但我似乎找不到

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