- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的 ViewModel 中有一个列表,我将其解析为 View
List<BoolSetting>
bool 设置:
public class BoolSetting
{
public BoolSetting(string displayName, bool value)
{
DisplayName = displayName;
Value = value;
}
public string DisplayName { get; set; }
public bool Value { get; set; }
}
然后我想为列表中的所有项目打印一个复选框,因此列表位于 View 使用的 ViewModel 中
@foreach(var boolSettingList in Model.BoolSettingList)
{
<div>
@Html.CheckBox(boolSettingList.DisplayName, boolSettingList.Value)
@boolSettingList.DisplayName
</div>
}
问题是当我发布这个时,我的模型没有在我的 ViewModel 的列表中保存更新的设置( bool 值),因此该对象是空的。
我可以
foreach (var VARIABLE in userSettingConfigViewModel.BoolSettingList)
{
VARIABLE.Value = (bool)Request.Form[VARIABLE.DisplayName];
}
但是这个 View 模型会有很多列表,其中一些会重名!这样就会引起冲突
那么有没有一种方法可以 foreach 打印我所有的 bool 值,然后让 MVC 弄清楚之后将数据放回 List 对象中?我无法让 CheckBoxFor 工作,因为它需要一个表达式,而且我无法想出一种方法来迭代我的列表
我可以通过为 BoolSetting 和 List 制作模板来使用模板修复它吗?
最佳答案
首先修复您的 View 模型并删除自定义构造函数,否则默认模型绑定(bind)器将无法实例化它,您将不得不编写自定义模型绑定(bind)器和其他东西:
public class BoolSetting
{
public string DisplayName { get; set; }
public bool Value { get; set; }
}
public class MyViewModel
{
public List<BoolSetting> Settings { get; set; }
}
然后编写一个将填充您的 View 模型的 Controller 操作:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Settings = new[]
{
new BoolSetting { DisplayName = "name 1", Value = true },
new BoolSetting { DisplayName = "name 2", Value = false },
new BoolSetting { DisplayName = "name 3", Value = true },
}.ToList()
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
然后是一个 View (~/Views/Home/Index.cshtml
),您只需在其中使用编辑器模板而不编写任何 foreach
循环或弱类型 html帮助程序,例如 Html.CheckBox
。通过使用编辑器模板,您将确保所有输入字段都具有正确的名称,以便默认模型绑定(bind)器能够在回发期间将它们的值提取到 View 模型中:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.Settings)
<button type="submit">OK</button>
}
最后是 View 模型的相应编辑器模板,它将为集合中的每个元素呈现 (~/Views/Home/EditorTemplates/BoolSetting.cshtml
):
@model BoolSetting
<div>
@Html.CheckBoxFor(x => x.Value)
@Html.LabelFor(x => x.Value, Model.DisplayName)
@Html.HiddenFor(x => x.DisplayName)
</div>
关于c# - 从 List<T> 创建 MVC3 CheckBoxFor 并在 Post 上取回列表(具有更新的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356703/
checkbox 的非常经典的用法,如果它不是我在字典中写的情况。启动网站时,我会转到带有复选框的页面。在这里,我的字典存在并填充了设置为 false 的值: 在测验之前,构建 ViewModel:
我正在开始的一个新项目中使用 bootstrap 5,我决定创建一个包装器来自动为我执行此操作,而不是必须围绕表单字段编写所有脚手架。 我对 textboxfor、textareafor 和 drop
我正在使用 CheckBoxFor 创建一组复选框的形式。我已向这些复选框添加了一个类,但由于 CheckBoxFor 没有将该类添加到隐藏的 false 复选框,因此我无法根据它选择这些生成的复选框
我想在MVC4中使用这个复选框,它会生成复选框和隐藏字段,我已经给了复选框选中并且其值为true,但隐藏字段的值为false,我不知道出了什么问题? @Html.CheckBoxFor(m => m.
我有一组“权限”。每个权限都具有三个属性:Id、Name 和 HasPermission。因此,作为示例,请考虑以下对象: public class AccessPerm { int PermId
我需要在点击函数上将模型值传递给@Html.CheckBoxFor 这是我的代码 @Html.CheckBoxFor(m => m.itemCategoryList[i].addItem, new
当文本框为空时禁用复选框但当文本框填充时移除属性如代码所示:这是在复选框上的工作,但不是在 Razor View 引擎中,请任何人帮助我 @Html.TextBoxFor(model => model
我动态创建了复选框。 @for (var i = 0; i @Html.CheckBoxFor(m => Model.Categories[i].AllChecked, new {
checkboxFor 为复选框呈现以下内容: 在javascript中, $('#IsCredit').val(); 总是正确的。勾选还是不勾选 如何确定复选框是否已在 Javascript 中
我有一个 View 模型: public class RegisterModel { ... public bool Confirmation{ get; set; } } 我在我的 Vi
有没有办法将@HTML.Checkboxfor 转换为切换 html 按钮?我引用了 https://www.w3schools.com/howto/howto_css_switch.asp 中的切换
我正在尝试创建一个动态 CheckBoxFor,其中某些项目被禁用。 这是禁用一切: @Html.CheckBoxFor(m=>m.Checked, new { @disabled = "disabl
问题是,由于某些奇怪的原因,当我使用 CheckBoxFor 时,我得到一个复选框,但 ID 中有“CS___8__locals1”。不知道这是从哪里来的,也不知道为什么会发生。 有什么想法吗?见下文
我有一个类角色如下; public enum Role { User1 = 1, User2 =
我无法为 @html.checkboxFor() 设置“通知我”标签我不想使用 div。我想让它变得简单。 最佳答案 类似于: Notify me @Html.CheckboxFor(...) 关于j
这个问题在这里已经有了答案: Post an HTML Table to ADO.NET DataTable (2 个答案) 关闭 6 年前。 我正在练习这个项目,我需要向用户显示一个客户列表和每个
我在构建一个包含复选框列表的表单时使用 CheckboxFor: @foreach (
我正在运行一个 MVC5 站点并尝试将其从使用单选按钮切换为使用复选框。我已经阅读了该站点上的其他一些示例,但似乎无法正常工作。我当前的 ViewModel 作为 NULL 发布到 Controlle
问题: 我想显示基于枚举的复选框列表: 例如item1[] item2[] item3[] 但是,需要根据逗号分隔列表 model.platforms 的内容检查这些复选框 例如: 如果 model.
如何使用 htmlAttributes 使 @Html.CheckBoxFor 不可见? 我试过: @Html.CheckBoxFor(modelItem => modelItem.Delete
我是一名优秀的程序员,十分优秀!