ASP.NET MVC 2 中的 httppost、httpput 等属性如何工作?

2024-03-01

在 ASP.NET MVC 2 中,引入了一些新的操作筛选器属性,作为 ASP.NET MVC 1 中属性的“简写”;例如,应用HttpPostAttribute与申请做同样的事情[AcceptVerbs(HttpVerbs.Post)]到一个动作方法。

此外,使用更详细的语法,可以组合不同的方法,以便允许例如Post and Delete.

现在我想知道:新属性如何发挥作用?如果我同时应用[HttpPost] and [HttpDelete],将 ASP.NET MVC 2allow两者或require两者(因此不允许任何事情)?


查看 ActionMethodSelector 的代码,似乎所有操作方法属性都必须为 IsValidForRequest 返回 true,然后才能将该操作添加到可能的匹配方法集中。由于 HttpPost 和 HttpDelete 不可能为同一请求返回 IsValidForRequest,因此我希望使用两者将阻止该操作匹配任何请求。

这是代码中的一个有说服力的评论:

私有静态列表 RunSelectionFilters(...) {
// 删除所有选择退出此请求的方法
// 选择退出,方法上定义的至少一个属性必须返回 false

(强调我的)

请注意,您仍然可以使用 AcceptVerbs 并明确OR动词(如果您需要匹配其中任何一个)。

EDIT-- 这是给您的 HttpPostOrDelete 属性。

[AttributeUsage( AttributeTargets.Method, AllowMultiple = false, Inherited = false )]
public class HttpPostOrDeleteAttribute : ActionMethodSelectorAttribute
{
    private static readonly AcceptVerbsAttribute _innerPostAttribute = new AcceptVerbsAttribute( HttpVerbs.Post );
    private static readonly AcceptVerbsAttribute _innerDeleteAttribute = new AcceptVerbsAttribute( HttpVerbs.Delete );

    public override bool IsValidForRequest( ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo )
    {
        return _innerDeleteAttribute.IsValidForRequest( controllerContext, methodInfo )
               || _innerPostAttribute.IsValidForRequest( controllerContext, methodInfo );
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 2 中的 httppost、httpput 等属性如何工作? 的相关文章

  • C++ 中的软(不是:弱)引用 - 这可能吗?有实施吗?

    在 C 中我正在使用boost shared ptr and boost weak ptr自动删除不再需要的对象 我知道这些与引用计数一起工作 在 Java 中 内存由垃圾收集器管理 它将内置对象引用视为strong WeakReferen
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS

随机推荐

  • NHibernate HiLo - 每个实体的新列和 HiLo 捕获

    我目前正在为我的课程使用 hilo id 生成器 但只是使用了最少的设置 例如
  • java是纯粹的面向对象吗?

    我们说java不是纯粹面向对象的 因为原始数据类型不是对象 但是在下面的代码中 对象如何保存原始数据类型 public class Test public Object meth Object obj System out println
  • HTML 生成的带有页眉、页脚和水印的 Microsoft Word 文档

    我正在寻找由 HTML 生成的 Microsoft Word 文档的示例 它应包含页眉 页脚和水印 这是一些示例 希望它可以帮助其他尝试使用 HTML 生成 ms word doc 文件的人
  • 删除一组中只有一个观察的条目

    在这里 我想删除按日期对给定城市只有一个条目的条目 例如 我想删除纽约和旧金山条目 因为它们在 4 11 和 4 12 上只有 1 个观察值 day City age 4 10 Miami 30 4 10 Miami 23 4 11 New
  • 使用 process.waitforexit() 时线程被中止错误

    我下面的代码是从 while 循环调用的 因此它连续执行多次 有时 但并非总是如此 我最终会在 p WaitforExit 上收到线程被中止错误 有人对此有任何见解吗 我应该在 p WaitForExit 之后调用 p Close 吗 st
  • Vuetify:如何配置 VueRouter 在新选项卡上打开链接?

    我有一个带有用户可以单击的菜单的导航栏 有些链接需要打开一个新选项卡 这就是我所拥有的 但我无法让它发挥作用
  • 如何绘制存储在 SSBO 中的顶点?

    这是下面的一个问题OpenGL 和加载 读取 AoSoA 混合 SoA 格式的数据 https stackoverflow com questions 59616117 opengl and loading reading data in
  • 在命名空间中前向声明类

    我很惊讶地发现我无法使用范围解析运算符从另一个范围转发声明一个类 即 class someScope someClass 相反 必须按如下方式使用完整声明 namespace class someClass 有人可以解释为什么会这样吗 更新
  • 是否可以(并且安全)使接受套接字成为非阻塞?

    我正在寻找一种方法来打断accept http pubs opengroup org onlinepubs 009695399 functions accept html调用阻塞套接字 使用信号不是一种选择 因为这意味着在库中 我不想弄乱用
  • 什么是“原子”数据类型?

    我遇到过ATOM输入Win32api http msdn microsoft com en us library windows desktop ms649053 28v vs 85 29 aspx并且在 Acrobat API 中还有AS
  • 非法字符串偏移“选项 1”[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是我的初
  • Windows / Java 中的反向换行

    有没有办法使用 Java 将几行写入 Windows 中的系统控制台 然后删除或修改它们 我可以使用以下命令多次在同一行上写入 r回车符 CYGWIN 命令less 文本查看器 管理它 尽管它不是Java 所以我怀疑这是可能的 我试过了 u
  • .NET 中预抖动程序集的优点和缺点是什么?

    NET 中预抖动程序集的优点和缺点是什么 我听说预抖动可以提高性能 什么时候应该预抖动 什么时候不应该预抖动 预编译 或预编译将提高性能 启动时 因为您将跳过该步骤 每次应用程序及其库加载时 NET JIT 的原因是 它可以在许多平台和架构
  • 有没有办法禁用 ExtJS 4 中的树视图节点

    我的目的是禁用西部地区树视图的某些节点 下面的代码片段显示了这一点 root expanded true id treeview1 children text Make Copy leaf true id HS1 disabled true
  • 使用构建器模式时,我应该按值还是可变引用获取“self”?

    到目前为止 我在官方 Rust 代码和其他包中看到了两种构建器模式 impl DataBuilder pub fn new gt DataBuilder pub fn arg1 mut self arg1 Arg1Type gt mut B
  • Sphinx automodule:如何引用同一模块中的类?

    我正在尝试使用狮身人面像autodoc http www sphinx doc org en master usage extensions autodoc html扩展 特别是automodule指令自动为我正在开发的 django 应用
  • Vuex:跳过操作并直接从组件提交突变

    在 vue js 应用程序中 使用 vuex 作为状态管理存储 我只需更改 vuex 中属性的值 为此 我可以采用两种方法 派遣action方法 这将进一步提交mutation 最终会改变状态 第二种方法是提交mutation直接来自组件
  • 推荐工作流应用程序的设计模式[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 用户可以在其中执行任务 工作流程 每个任务都由要执行的操作队列组成 我希望能够在工作流程启动后获得用户输入 Exampl
  • 使用jsoup登录网站

    On 这个网站 http kortladdning3 chalmerskonferens se 你可以输入你的学生卡号 然后就会显示该卡上还剩多少钱 我想使用JSOUP获取信息 这是我当前的代码 但它不起作用 String url http
  • ASP.NET MVC 2 中的 httppost、httpput 等属性如何工作?

    在 ASP NET MVC 2 中 引入了一些新的操作筛选器属性 作为 ASP NET MVC 1 中属性的 简写 例如 应用HttpPostAttribute与申请做同样的事情 AcceptVerbs HttpVerbs Post 到一个