CheckBoxList多选:模型绑定回困难

2023-11-24

我正在上课如下

 public class UserRoleModel
{
    public string Role { get; set; }
    public bool UserRole { get; set; }
}

and public UserRoleModel[] UserRoles { get; set; }


我的控制器如下:

 public ActionResult CreateUser()
     {
         UserDetailsModel model = new UserDetailsModel();
         return View(model);
     }

     [HttpPost]
     public ActionResult CreateUser(UserDetailsModel model)
     {

         return View(model);
     }

在我看来我有

    >@foreach (var item in Model.UserRoles)      
    { 

    name = "UserRoles"+ ".Value["+ i + "]"; 
    id= "UserRoles" + "_Value[" + i++ + "]";
    selected = item.UserRole ? "checked=\"checked\"" : ""; 

        <p>
        <input type="checkbox" name="@name" id="@id" @selected value="true" /> 
        <label for="@id">@item.Role</label> 
        <input type="hidden" name="@name" value="false" /> 
        </p> 
  } 

尽管在我的视图中相应地显示了值,但 UserRoles 没有模型绑定回。我错过了什么或者有什么更好、更干净的方法吗?


这些事情可以通过编辑器模板很好地实现。它们还可以避免您在视图中编写意大利面条式代码。例子:

Model:

public class UserDetailsModel
{
    public IEnumerable<UserRoleModel> Roles { get; set; }
}

public class UserRoleModel
{
    public string Role { get; set; }
    public bool UserRole { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new UserDetailsModel
        {
            // Fill with some dummy stuff
            Roles = Enumerable.Range(1, 5).Select(x => new UserRoleModel
            {
                Role = "role " + x,
                UserRole = false
            })
        });
    }

    [HttpPost]
    public ActionResult Index(UserDetailsModel model)
    {
        return View(model);
    }
}

View (~/Views/Home/Index.cshtml):

@model AppName.Models.UserDetailsModel
@using (Html.BeginForm())
{ 
    @Html.EditorFor(x => x.Roles)
    <input type="submit" value="OK" />
}

编辑器模板(~/Views/Home/EditorTemplates/UserRoleModel.cshtml):

@model AppName.Models.UserRoleModel
@Html.CheckBoxFor(x => x.UserRole)
@Html.LabelFor(x => x.Role, Model.Role)
@Html.HiddenFor(x => x.Role)

这就是我所说的干净的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CheckBoxList多选:模型绑定回困难 的相关文章

随机推荐

  • 具有四核处理器的笔记本电脑中的 Java 多线程

    我正在阅读 Java 教程 其中提到实际的多线程不会发生在具有单个处理器的机器中 它提到操作系统为 Java 进程分配指定的时间 而 JVM 线程调度程序会挑选线程在一小段时间内一次运行一个线程 我有一台四核处理器的笔记本电脑 通过在每个核
  • 如何在构建 JSON 字符串时转义特殊字符?

    这是我的字符串 user name abc fx message color red user color blue timestamp 2013 10 04T08 10 41 0100 message I mABC nanotime 19
  • 无法禁用网站的 SSL

    我创建了一个网站并将其部署到 Windows Azure 在开发过程中的某个地方 我从项目属性启用了 SSL 并且所有内容 https 地址 在本地主机和我部署站点的 Azure 网站上都工作正常 现在我的 Azure 试用版即将到期 我正
  • 在 iPhone 应用程序中从磁盘加载图像很慢

    在我的 iPhone 应用程序中 我使用 iPhone 的相机拍照并将其保存到磁盘 应用程序的文档文件夹 这就是我保存它的方式 UIImageJPEGRepresentation photoTaken 0 0 writeToFile jpe
  • 默认虚拟d'tor

    让我们假设我有两个课程 class Base class Derived public Base 没有人有 d tor 在这种情况下 如果我声明变量 Base b Derived d 我的编译器将为我生成 d tors 我的问题是 默认的
  • PDO 错误:“参数号无效:参数未定义”

    我正在尝试使用一个简单的 MySQL 插入查询 其参数采用数组形式 它一直告诉我参数数量错误 我已尝试以下操作 均产生相同的错误 stmt3 link gt prepare INSERT INTO messages VALUES null
  • Java 使用什么哈希函数来实现 Hashtable 类?

    从CLRS 算法导论 一书中 有几种哈希函数 例如mod multiply等 Java 使用什么哈希函数将键映射到槽 我看到这里有一个问题Java语言中使用的哈希函数 但它没有回答问题 而且我认为该问题的标记答案是错误的 它说 hashCo
  • C++ STL unordered_map 如何解决冲突?

    C STL unordered map 如何解决冲突 看着http www cplusplus com reference unordered map unordered map 它说 独特的钥匙 容器中的两个元素不能具有相同的键 这应该意
  • 如何优雅地耗尽EKS中的节点?

    有时我们需要排出 Kubernetes 中的节点 当我手动设置 k8s 集群时 我可以耗尽特定节点 然后终止该机器 在 EKS 中 节点位于自动缩放组下 这意味着我无法终止特定实例 节点 如果我手动终止一个实例 另一个实例 节点 将自动添加
  • 从 Google Cloud Storage 加载 csv 文件时出现 BigQuery 错误

    我正在尝试加载 a 的数据csv保存在的文件GCS into BigQuery csv 文件位于UTF 8格式 包含 7 列 我已经在数据方案中指定了这些列 所有字符串和可为空的 并且我已经检查了 csv 文件的内容 这看起来很好 当我尝试
  • windows下hadoop启动tasktracker出现问题

    我正在尝试在Windows下使用hadoop 当我想启动tasktracker时遇到问题 例如 bin start all sh 然后日志写道 2011 06 08 16 32 18 157 ERROR org apache hadoop
  • $(document).ready() 什么时候触发?

    评论来自这个问题让我思考一些事情 具体什么时候 document ready 功能火 显而易见的答案是 当文档准备好时 但具体是什么时候呢 例如 如果我在 PHP 继续执行时打开输出缓冲并刷新输出 这不会将输出发送到浏览器吗 那么 有什么方
  • “程序入口点...无法定位”在错误的 DLL 中

    我已经从 Haskell 代码创建了一个 DLL 并从 C 调用这个 DLL 当我在 Visual Studio 2010 中以调试模式运行时 我的应用程序工作正常 但是当我进行发布构建并安装它时 出现错误 无法在动态链接库 Advance
  • 在 ASP.Net 中,<%= 和 <%# 之间有什么区别[重复]

    这个问题在这里已经有答案了 在 ASP Net 中 有什么区别 and 看这个问题 什么时候应该在 ASP NET 控件中使用 和 这些答案的摘要 有几种不同的 蜂蜇
  • 通过字符串获取C#动态属性的值

    我想访问 a 的值dynamic带有字符串的 C 属性 dynamic d new value1 some value2 random value3 value 如果我只有 value2 作为字符串 如何获取 d value2 随机 的值
  • 颤动中的视频背景

    flutter 中可以一直播放背景视频吗 我正在寻找一些软件包并试图使其发挥作用 但我不知道如何 也许使用类似的东西 但带有视频 decoration new BoxDecoration image new DecorationImage
  • 使用 MongoDB Driver Java API 将 BSON 转换为 JSON

    我正在使用 MongoDB Driver Java API 将 BSON 转换为 JSON 我有这样的测试代码 String input timestamp 1486064586641 org bson Document doc org b
  • 如何配置 WEBrick 以通过 HTTPS 使用中间证书?

    我目前在 Rails 应用程序中使用以下选项来通过 WEBrick 启用 HTTPS Port gt 3000 environment gt ENV RAILS ENV development dup daemonize gt false
  • Edittext达到最大edittext长度后跳转到下一个edittext

    在我的布局中 我有 4 个编辑文本 达到最大长度后 我需要跳转到下一个编辑文本 但是有一个问题 怎么做 请任何人帮助我做到这一点 达到计数后 您将编辑文本的焦点更改为下一个 Edittext edt1 Edittext edt2 mount
  • CheckBoxList多选:模型绑定回困难

    我正在上课如下 public class UserRoleModel public string Role get set public bool UserRole get set and public UserRoleModel User