使用模型绑定从 MVC 4 中的 List 中选择项目

2023-11-23

给定一个类

public class Person
{
    // Some general properties

    public List<Hobby> Hobbies { get; set; }
}

public class Hobby
{
    // Some properties e.g. Name, etc.
}

static List<Hobby> AllHobbies { get; }

是否可以创建一个视图,允许用户使用模型绑定选择他的爱好?

在视图中当然可以循环AllHobbies并渲染一个<input type="checkbox" />对于每个,然后在回发控制器中手动连接选定的值。似乎这应该可以通过模型绑定来实现,但我不知道如何实现。


当然,我建议您使用编辑器模板。

假设某个爱好有一个名称和一个指示用户是否选择它的布尔字段:

public class Hobby
{
    public string Name { get; set; }
    public bool Selected { get; set; }
}

然后是一个控制器将模型输入视图并处理表单提交:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var person = new Person
        {
            Hobbies = new[]
            {
                new Hobby { Name = "hobby 1" },
                new Hobby { Name = "hobby 2", Selected = true },
                new Hobby { Name = "hobby 3" },
            }.ToList()
        };
        return View(person);
    }

    [HttpPost]
    public ActionResult Index(Person person)
    {
        var selectedHobbies = person
            .Hobbies
            .Where(x => x.Selected).Select(x => x.Name);
        string message = string.Join(",", selectedHobbies);
        return Content("Thank you for selecting: " + message);
    }
}

然后是一个包含允许用户选择爱好的表单的视图:

@model Person

@using (Html.BeginForm()) 
{
    <h2>Hobbies</h2>
    @Html.EditorFor(x => x.Hobbies)
    <button type="submit">OK</button>
}

以及一个相应的编辑器模板,它将自动为每个元素呈现Hobbies收藏 (~/Views/Home/EditorTemplates/Hobby.cshtml-> 请注意,模板的名称和位置很重要):

@model Hobby

<div>
    @Html.LabelFor(x => x.Selected, Model.Name)
    @Html.HiddenFor(x => x.Name)
    @Html.CheckBoxFor(x => x.Selected)
</div>

对于更高级的编辑场景,我建议您浏览 Steven Sanderson 的博客文章关于这个话题。

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

使用模型绑定从 MVC 4 中的 List 中选择项目 的相关文章

  • 单选按钮更改事件

    我有 2 个单选按钮 例如 ID 和名称
  • 无效操作。连接已关闭。 ASP.NET MVC

    这种情况并不经常发生 但有时我会收到一封通过电子邮件发送给我的异常报告 指出这段代码 我想知道您是否发现以下代码有任何问题 我无法让它在本地失败 并且使用断点跟踪数据总是会一步步给出正确的结果 namespace DomainModel C
  • MVC 5 动态行与 BeginCollectionItem

    单击按钮时向表添加 删除行的最佳方法是什么 我需要从子类属性创建的行 子类是主类 模型中的列表 当前有一个视图 模型是 MyMain 它使用 RenderPartial 引用部分视图 分部视图显示模型的属性 一个名为 MyChild 的类
  • Asp.Net 捆绑不使用 .min 文件

    根据发布模式下的文档 捆绑程序应该使用 min js 文件 如果存在 我通过以下方式添加角度 bundles Add new ScriptBundle Bundles Scripts Include Content Scripts angu
  • ASP.Net MVC 4 通用主要难点

    我正在开发一个ASP NET MVC 4Web应用程序 以前我的 MVC 应用程序是使用MVC 3和这个新的MVC 4我刚刚复制 重复使用了我的应用程序认证和授权码从以前的应用程序 当用户登录我的网站时 我会执行以下操作 账户控制器 pub
  • 尝试通过安全透明方法 xxx 访问安全关键 yy

    我刚刚开始学习 ASP NET MVC 并遵循 ASP NET MVC 教程 我正在使用 Visual Studio Express 2013 RC for Web 认为这可能是我的问题的原因 因为分页教程是使用 VS2012 编写的 一切
  • MVC 4 SimpleMembership HasLocalAccount 方法未找到

    当尝试访问时 account manage在生产服务器上我收到此错误 System MissingMethodException Method not found Boolean WebMatrix WebData ExtendedMemb
  • 用户注销速度非常快

    我正在使用 ASP NET 身份成员身份 这是 Startup Auth cs 代码 app CreatePerOwinContext EFDbContext Create app CreatePerOwinContext
  • 在ConfigureServices中注入依赖

    在我的 ASP Net Core 应用程序中 我需要在以下位置注入一些依赖项 在我的例子中是一个存储库 ConfigureServices method 问题是该方法不允许使用多个参数来注入依赖项 该怎么办呢 这是我的代码 public v
  • 在 ASP.NET MVC 中强制使用 Json() 中的小写属性名称

    鉴于以下课程 public class Result public bool Success get set public string Message get set 我将在控制器操作中返回其中之一 如下所示 return Json ne
  • ASP.NET Core MVC防伪

    尝试在核心 mvc 项目中打开防伪功能 但没有成功 做了什么 添加过滤器以自动检查每个 POST 请求的防伪令牌 services AddMvc o gt o Filters Add new AutoValidateAntiforgeryT
  • 身份服务器刷新令牌资源所有者密码凭证流程

    我正在使用 IdentityServer 来控制对 API 的访问 我有一个单独的身份验证 API 它发出令牌并验证访问请求以确保 API 的安全 我让用户能够通过安全的 Web 应用程序生成访问令牌 我正在使用资源所有者密码凭证流程 有没
  • C# SMTP 身份验证失败,但凭据正确

    这是我的问题 我编写了以下程序来测试是否可以发送电子邮件 class Program static void Main string args try Console WriteLine Mail To MailAddress to new
  • mvc 2中的图像上传和预览

    我正在通过转换 asp net 网站来学习 mvc 2 在我的页面中 我必须上传图像并显示图像的预览 下面给出了我的 asp net 页面的屏幕截图 我将模型创建为 public class Contest public int conte
  • 如何使自定义错误页面在 ASP.NET MVC 4 中工作

    我想要显示 500 404 和 403 的自定义错误页面 这是我所做的 在 web config 中启用自定义错误 如下所示
  • 从 .Net MVC 视图获取 HTML,而不在浏览器中实际渲染视图?

    我的控制器中有一个 ActionResult 我想从中发送 HTML 电子邮件 该电子邮件的正文是由视图生成的 我可以在传递模型时获取视图的结果并避免将其发送到浏览器 而不是在控制器中使用 2 个 actionresults 方法吗 Mvc
  • 包括过滤器子集合[重复]

    这个问题在这里已经有答案了 我在为 LINQ 查询中包含的项目添加一些过滤条件时遇到一些困难 我的查询就像 var item Context Order Include Inner Include Inner first Include I
  • 将多个对象传递给我的控制器

    我将一个对象传递给我的控制器 如下所示 var form JSON stringify subRevisedRequest frmRevised val subSubcontractor frmSubcontractor val subDe
  • ASP.NET MVC 和 Expression XAML - 如何集成?

    一些背景 ASP net MVC 主要是构建和开发 ASP NET 应用程序方式的范式转变 从 代码隐藏 类型的心态转变为更像标准 MVC Ruby on Rails 的心态 我赞扬它作为一种简化工具来简化单元测试和代码分离 尽管 html
  • 阻止未确认电子邮件的用户使用 Identity 2 登录 ASP.Net MVC

    在 Microsoft Identity 2 中 用户可以确认我从以下位置下载了 Identity 2 示例项目的电子邮件地址here https www nuget org packages Microsoft AspNet Identi

随机推荐

  • 使用元素求幂加速嵌套 for 循环

    我正在编写一个大型代码 我发现自己需要加速其中的特定部分 我创建了一个MWE如下图所示 import numpy as np import time def random data N Generate some random data r
  • 如何以编程方式打开 Safari 扩展 ToolbarItem 弹出窗口

    我想以编程方式触发 Safari 扩展工具栏项目上的 单击 事件 以便在网页上发生某些情况后出现我的自定义弹出窗口 我正在使用新的 Xcode 扩展 IDE 并使用界面生成器构建了我的弹出窗口 目前 StackOverflow 上的所有答案
  • 使用 .bat 文件运行 php 脚本

    我需要每天晚上在我的服务器上运行一个 php 脚本 在 Linux 系统上我设置了一个 cron 作业 但我被困在 Windows 系统上 我知道我必须使用 Windows 任务计划程序设置一个任务 并且该任务需要运行一个 bat 文件 该
  • 向 DataTable 添加多行

    我知道有两种方法将带有数据的新行添加到DataTable string arr2 one two three dtDeptDtl Columns Add Dept Cd for int a 0 a lt arr2 Length a Data
  • 关于 C 中的 ## 预处理器

    Given define cat x y x y 电话cat a 1 回报a1 but cat cat 1 2 3 未定义 但是如果我也定义 define xcat x y cat x y 那么结果是xcat xcat 1 2 3 就是现在
  • RequireJS:根据环境加载不同的文件

    是否有根据当前项目环境 例如开发或生产 加载不同文件的功能 我的意思是 它可以帮助我透明地加载缩小或完整的文件 我读到有关多版本加载的内容 但多版本意味着我需要指定文件的版本 例如 我的模块中有 module js 文件 在这个文件中我需要
  • CSS 媒体查询 - 顺序很重要吗?

    现在我经常使用 CSS 媒体查询 我想知道最好按什么顺序使用它们 Method 1 media only screen and min width 800px content sidebar media only screen and ma
  • 获取文件的 QuickLook 预览图像

    有什么方法可以快速查看文件的预览图像吗 我正在寻找这样的东西 NSImage image QuickLookPreviewer quickLookPreviewForFile path See QLThumbnailRequest在文档中
  • Flutter 中的水平步进器

    我想创建一个水平步进器 我知道这很容易 但是这一次 步数应该很大 举个例子 这就是我在垂直领域所做的事情 import package flutter material dart void main gt runApp new MyApp
  • 在 C++ 中如何实现多个 COM 接口?

    我试图理解这个示例代码关于浏览器帮助程序对象 在内部 作者实现了一个公开多个接口 IObjectWithSite IDispatch 的类 他的 QueryInterface 函数执行以下操作 if riid IID IUnknown pp
  • 如何验证 jar 内 MANIFEST.MF 的顺序?

    我遇到了一个有趣的问题 这对我来说绝对是新的 正如我突然发现的 Jar 规范说 被包含在内 META INF and MANIFEST MF必须是第一个和第二个条目 jar包而不仅仅是存档中的目录和文件 我正在使用 Java 框架 非常注意
  • 如何在 C++/CLI 中使用 boost::bind 绑定托管类的成员

    我在本机 C 类中使用 boost signal 现在我正在 C CLI 中编写 NET 包装器 以便可以将本机 C 回调公开为 NET 事件 当我尝试使用 boost bind 获取托管类的成员函数的地址时 出现编译器错误 3374 指出
  • Python CSV 到 SQLite

    我正在 转换 一个大的 1 6GB CSV 文件并将CSV 的特定字段插入到SQLite 数据库中 基本上我的代码如下所示 import csv sqlite3 conn sqlite3 connect path to file db co
  • 使用 Apache POI 将部分单元格内容设置为下划线?

    我正在开发一个程序 其中我必须在 Excel 电子表格中设置单元格值 例如 这是一下划线 text 它可以是任何粗体 斜体或下划线 我正在使用 Apache POI 3 9 请尝试以下操作 public static void differ
  • 使用 Apache Beam 进行窗口化 - 修复了窗口似乎没有关闭的问题?

    我们正在尝试在 Apache Beam 管道上使用固定窗口 使用DirectRunner 我们的流程如下 从发布 订阅中提取数据 将 JSON 反序列化为 Java 对象 带有 5 秒固定窗口的窗口事件 使用自定义CombineFn 合并每
  • 将单词列表中的所有单词替换为 python 中的另一个字符串

    我有一个用户输入了字符串 我想搜索它并用我的替换字符串替换单词列表中出现的任何内容 import re prohibitedWords MVGame Kappa DatSheffy DansGame BrainSlug SwiftRage
  • 如何将 && 操作数解析为逻辑标量

    当我在matlab中运行代码后 我遇到了这个错误 并且不确定如何解决它 我怎么解决这个问题 Warning 的操作数和 运算符必须可转换为逻辑标量值 Jgray double rgb2gray J Calculate the Gradien
  • 使用 XML 和 XSD 创建填充数据库

    我不确定这是否可行 但我想我会询问并看看是否可以获得任何信息 正如标题所示 我有一个包含数千行的 XML 文件 我还有其关联的 XSD 架构文件 我想知道 我是否可以在不手动指定 XPath 的情况下将这些数据转换为 MySQL 数据库 例
  • Android模拟器设置没有相机选项(用于虚拟场景)

    I want my android emulator to be in a virtual scene when I open the camera but it doesn t work It just shows a pixelated
  • 使用模型绑定从 MVC 4 中的 List 中选择项目

    给定一个类 public class Person Some general properties public List