ModelBinder没有被调用

2024-03-17

Per 我之前的问题 https://stackoverflow.com/questions/5228144/bind-action-1-2-3-to-listint,我实现了一个模型绑定器来映射/api/v1/widgets/1,2,3 to

// WidgetsController.cs: 
public ActionResult Show(IEnumerable<int> idArgs)
{

}

这在一段时间内有效,但现在不再有效了。我的 ModelBinder 根本没有被调用。当我的动作被调用时,idArgs具有空列表的值,即使我将其默认值设置为null在路线中,这向我表明默认模型绑定器认为它从某个地方获取了值。自上周工作以来我所做的唯一改变是之前我已经调用了我的操作ShowMany.从那时起,我把它改名为Show。谁能帮我弄清楚为什么我的 ModelBinder 没有被调用?

在 global.asax.cs 中,我有

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RegisterRoutes(RouteTable.Routes);
    ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());

    ModelBinders.Binders.Add(typeof(IEnumerable<int>), new IEnumerableOfIntCSVModelBinder());
}

路线如下(我已验证该路线正在被使用):

context.MapRoute(
    "show",
    "api/{controller}/{idArgs}",
    new { action = "show" },
    new { httpMethod = new HttpMethodConstraint("GET"), idArgs = @"^(\d+,)+\d+,?$" }
);

Edit:我尝试过更多地弄乱路线,并注释掉JsonValueProvider,但我仍然得到一个空数组。在我的控制器中,我可以做

var ids = RouteData.Values["idArgs"];

并得到字符串“1,2,3”。如果框架将其传递给我的 ModelBinder,我的 ModelBinder 会将其转换为IEnumerable.

我正在使用 AutoFac。 AutoFac 是否有可能将空数组注入到我的控制器方法中?我在其他地方没有遇到过这样的问题(我们在这个项目中到处都使用 AutoFac。)


Edit2:我也尝试过装饰idArgs动作参数,以及控制器[ModelBinder(typeof(IEnumerableOfIntCSVModelBinder))],但这没有效果。


我看到你有一个JsonValueProviderFactory添加到你的Application_Start。也许这个工厂的实现中有一些东西可以防止模型绑定器被击中?

还有您显示的网址/api/v1/widgets/1,2,3与您拥有的路线定义无关"restapi/{controller}/{idArgs}".

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

ModelBinder没有被调用 的相关文章

随机推荐

  • 将精灵旋转到鼠标位置

    我一直在使用 SFML 1 6 库 我想知道 如何旋转精灵 使其始终转向鼠标在屏幕上的位置 Thanks SFML具体代码优先 如果你有精灵的位置 S Sx Sy 和光标的位置 C Cx Cy You can calculate the a
  • mySQL 查找重复项并删除它们

    我想知道是否有一种方法可以通过一个查询来完成此操作 似乎当我最初用虚拟数据填充数据库以处理 10k 条记录时 在混乱的某个地方 所有脚本转储了额外的 1 044 行 其中行是重复的 我用以下方法确定了这一点 SELECT x ID x fi
  • Win10 64位上CUDA 12的PyTorch安装

    我需要在我的 PC 上安装 PyTorch 其 CUDA 版本 12 0 pytorch 2 的表 https i stack imgur com X13oS png in In 火炬网站 https pytorch org get sta
  • 命令源禁用和启用

    我阅读了有关 WPF 命令的所有内容 并且了解 GoF 命令模式 但仍然认为 我对这个过程有一个问题 命令目标 例如文本框 如何告诉命令源 例如按钮 它有更改状态 例如 插入文本框中的某些文本 以便源可以禁用或启用自身或执行其希望执行的任何
  • 使用 Java 和观察者模式使用 Jersey 的 RESTful Web 服务

    我正在尝试为学校项目实现一个 n 层架构应用程序 客户端和服务器之间的通信是通过 RESTful Web 服务完成的 我用了Jersey来实现这一点Java 我唯一的问题是 如何register服务器上的客户端接收更改通知 就像通常使用观察
  • Ruby on Rails:=> 符号是什么意思?

    我正在努力学习 Head First Rails 并且我不断看到 gt 它在路线中 map connect marmots new controller gt marmots action gt new 它在渲染部分 render part
  • 使用 pygame 单击按钮时启动事件

    大家好 我是 pygame 的新手 我开发了一个简单的游戏 其中球相互弹跳 效果很好 我添加了一个带有按钮的用户界面 其中包含以下选项new game loadgame options 我需要的是 当用户点击new game button他
  • 记录类型(或数组)的前向声明

    我想在XE5中这样做 type TMyRec record fields class function GetList TMyRecArr static end TMyRecArr array of TMyRec 我已经看过了 记录类型的前
  • Docker windows 加载内核模块

    我正在 Windows 上运行 Docker 在 MacOSX 上可以观察到下面描述的类似效果 我有一个 Docker 容器 其中有一个程序尝试访问 squashfs 映像 要访问squashfs 内核必须静态地遵守loopdevice支持
  • 如何循环VelocityContext中的所有变量?

    在我的 Velocity 模板 vm 文件 中 如何循环遍历中存在的所有变量或属性VelocityContext 参考下面的代码 我希望模板能够写入上下文中传递的所有水果的名称和数量 Map
  • 为什么 jquery 表单验证不起作用?

    我有一个在单击事件后在对话框内打开的表单 我想知道我的 jquery 中是否存在我没 有注意到的语法问题 提交处理函数中没有任何日志正在记录 HTML div title Thanks For Volunteering div
  • IronPython 脚本调试

    我有一个 NET 应用程序 并且有一个 IronPython 脚本选项卡页 脚本工作正常 但我强烈希望能够调试它们 就在应用程序中并切换断点 这个问题有什么解决办法吗 您可以找到 IronPython 调试器here https githu
  • jar 内出现 NoClassDefFoundError

    我有一个类位于名为 com toptur sysTray 的包中 它所做的只是加载系统托盘 它不使用任何外部包 我创建一个 SysTray 对象来安装系统托盘 一切都构建得很好 我可以从命令行运行该应用程序并安装系统托盘 但是当我尝试从类文
  • 仅 iOS 7 崩溃 [NSNull intValue]:无法识别的选择器发送到实例

    我想从 JSON 服务获取数据 仅 iOS 7 版本在从 JSON 值获取数据时崩溃 它从下面的 JSON 服务返回 voteAverageRating 0 voteCount 0 My code int voteCount listDic
  • 无法找到 org.gradle.api.plugins.quality.internal.findbugs.FindBugsXmlReportImpl 类型的报告 xml 上的参数的方法目标()

    将 android studio 版本更新到 3 4 0 后 我将 Gradle 版本更新到 5 1 1 并尝试重建项目 但它在quality gradle 文件中抛出异常 Task failed with an exception Whe
  • 如何为 Google 地图 V3 中的所有标记创建一个事件处理程序?

    据我所知 如果地图上有多个标记 并且需要处理它们的点击 则必须为每个标记设置一个处理程序 如下所示 var marker new google maps Marker position new google maps LatLng 55 3
  • tableView:viewForHeaderInSection: 默认值?

    我想要一个自定义节标题 其余部分是默认标题 UIView tableView UITableView tableView viewForHeaderInSection NSInteger section return 我应该返回什么才能提供
  • 将具有重复键的元组列表转换为列表字典

    我有一个协会list使用重复键 l 1 2 2 3 1 3 2 4 我想要一个dict with list values d 1 2 3 2 3 4 我可以做得更好吗 for x y in l try z d x except KeyErr
  • Adobe Stratus 的缺点

    我想知道使用 Adob e Stratus 是否有任何缺点 既然只是P2P 那么什么时候会出现P2P不能使用的情况呢 网站上说的是 UDP 数据包被阻止时之类的内容 多久一次 假设有 1000 人使用该服务 大约有多少人无法使用该服务 另外
  • ModelBinder没有被调用

    Per 我之前的问题 https stackoverflow com questions 5228144 bind action 1 2 3 to listint 我实现了一个模型绑定器来映射 api v1 widgets 1 2 3 to