如何使用具有多个同名值的 RouteValues

2024-03-07

在我的 ASP.NET MVC 4 应用程序中,我可以过滤多个标签。在 HTML 中,它看起来像这样:

<form>
  <label>
    <input type="checkbox" name="tag" value="1">One
  </label>
  <label>
    <input type="checkbox" name="tag" value="2">Two
  </label>
  <label>
    <input type="checkbox" name="tag" value="3">Three
  </label>
  <input type="submit" name="action" value="Filter">
</form>

当选中第一个和第三个复选框时,查询字符串被序列化为?tag=1&tag=3我的控制器很好地传递了具有以下类类型的对象:

// Filter class
public class Filter { 
    public ICollection<int> tag { get; set; }
}

// Controller method
public ActionResult Index(AdFilter filter)
{
    string url = Url.Action("DoFilter", filter);
    // url gets this value:
    // "/controller/Index?tag=System.Collections.Generic.List%601%5BSystem.Int32%5D"
    // I would expect this:
    // "/controller/Index?tag=1&tag=3"
    ...
 }

但是,致电Url.Action结果是序列化集合的类型名,而不是实际值。

如何才能做到这一点?


MVC 的标准基础设施可以处理描述为输入的多键。是否没有标准基础设施可以以相反的方式处理它?我错过了什么吗?


您可以通过以下方式进行操作:

string url = Url.Action("DoFilter", TypeHelper2.ObjectToDictionary(filter) );

The TypeHelper2.ObjectToDictionary是.NET内部方法的修改版本,可以在这里找到两个文件要点 https://gist.github.com/doekman/b5fbe3944bfe0283670e.

改变的行为:当一个项目实现时IEnumerable,对于每个项目,一个条目是 在返回的字典中创建作为键"Name[index]"(索引从 0 开始)。这是可能的,因为 MVC 控制器的绑定器可以处理两者tag=1&tag=3 and tag[0]=1&tag[1]=3查询字符串。

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

如何使用具有多个同名值的 RouteValues 的相关文章

  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点

随机推荐

  • Spring Security 条件default-target-url

    我注意到有几个关于这个主题的问题 我浏览了它们 但无法将它们应用到我的特定 Spring 设置中 我想根据用户的角色将登录重定向配置为有条件的 这是我到目前为止所拥有的
  • 如何将所有背景设置为透明以便可以看到主屏幕?

    我想了好几天这个问题 如何将应用程序中的所有背景设置为透明 以便可以看到iOS桌面和图标 有什么方法可以帮助满足需求吗 我仍然没有对图像进行采样的权限 我尝试过一些方法 我把整个iOS系统看成一个大app 当我们在桌面上打开一个应用程序时
  • 将多个协议 Array> 向下转换为 Array

    所以我有两个数组 var arrayOne Array
  • 向 ASP.NET MVC 的 SiteMap 添加自定义属性

    我在 ASP NET MVC 中使用内置的 ASP NET 站点地图 具有以下架构 http schemas microsoft com AspNet SiteMap File 1 0 http schemas microsoft com
  • 如何在 python 中将数据(或单点)添加到现有的 3d 散点图表达图中

    我有一段代码可以绘制与此类似的图 import plotly express as px import plotly graph objects as go df px data tips fig go Figure data go Sca
  • 无法将 Flask 部署到 Azure

    我正在尝试部署python flask to azure但无法打通 我创建了一个 api 服务Azure 这里是url for my api 并且它与python 3 https textclassifier azurewebsites n
  • PHP crypt() 的输出长度是多少? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions PHP的输出长度是多少crypt m
  • 如何在 SQL Server 中向用户定义的表类型添加索引或主键?

    我有一个用户定义的类型 我想向其中添加主键或索引 IF NOT EXISTS SELECT FROM sys types st JOIN sys schemas ss ON st schema id ss schema id WHERE s
  • 如何在uwp中为特定sdk定义条件编译器符号

    我正在 Visual Studio 2015 中编写一个 UWP 应用程序 最小 sdk 是 10240 最大是 14393 我想编写 sdk 特定代码 所以我想定义一个条件编译符号 我可以简单地在构建选项卡下的项目属性窗口中定义它 但是我
  • 推荐的 VBA IDE [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有推荐的 IDE 用于开发 Excel VBA 宏 提供合理的错误报告和代码完成 目前 我使用的是
  • 插入到android sqlite数据库中的特定行

    我正在寻找一种方法将新条目插入到 android 中的 sqlite 数据库中的特定行中 基本思想是数据库存储如下条目 id day time 1 Monday 09 00 2 Monday 11 00 3 Tuesday 10 00 ID
  • Amazon CloudSearch 从 DynamoDB 创建 Null ID

    我正在尝试开始使用 Amazon CloudSearch 我的数据位于我想要搜索的 DynamoDB 表中 我能够设置云搜索域 它从表中提取字段并让我设置它们 等等 但是 我上传数据时遇到了一些问题 我告诉它要从中提取 DynamoDB 表
  • 结果值在 '? :' 表达式的类型 '()' 和 'Bool' 不匹配[重复]

    这个问题在这里已经有答案了 我有一个双精度数组和一个按钮 按下该按钮会清空数组 我希望仅当数组的计数大于零时才启用该按钮 代码如下 var numbers Double At some point I add some numbers he
  • KnockoutJS 的购物车逻辑(?)问题

    The Goal 制作动态产品列表 场景 我有一个包含产品的购物应用程序 当我点击add button的产品 我想在侧边栏中显示我添加的产品 问题总结 您只需阅读此内容 我的代码中有以下代码ProductsSummary Index csh
  • 开始后跟冒号和变量是什么意思?

    什么是data mux意思是这里 它只是块的名称吗 if PORT CONFIG 32 P0 1 b1 begin data mux end 这些是块名称 它们特别适用于generate块 例如 您可以定义一个generate块如 genv
  • user.status 始终返回“离线”

    我知道user status应该用于返回用户状态 但它总是返回离线状态 无论我或其他参与者更改状态 代码 app commands command name user description f async def user self in
  • std::function 的开销

    我见过很多人们建议不要使用的例子std function lt gt 因为它是一个重量级的机制 有人可以解释一下为什么会这样吗 std function是一个类型擦除类 它采用任何它的构造材料 并删除除以下内容之外的所有内容 使用有问题的签
  • Prettytensor:尝试使用未初始化的值

    我正在关注这些教程 教程4中介绍了prettytensor 按照教程 我编写了这段代码来运行一个小型神经网络 import tensorflow as tf Use PrettyTensor to simplify Neural Netwo
  • 使用控制台应用程序调用非静态类

    我正在尝试使用控制台应用程序调用另一个类的方法 我尝试调用的类不是静态的 class Program static void Main string args Program p new Program var myString p Non
  • 如何使用具有多个同名值的 RouteValues

    在我的 ASP NET MVC 4 应用程序中 我可以过滤多个标签 在 HTML 中 它看起来像这样