问题标签 [action-filter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ASP.NET MVC:如何创建一个动作过滤器来输出 JSON?
我使用 ASP.NET MVC 的第二天和我对 SO 代码的第一个请求(是的,走捷径)。
我正在寻找一种方法来创建一个过滤器,该过滤器拦截来自 Action 的当前输出,而是输出 JSON(我知道替代方法,但这是为了帮助我理解过滤器)。我想忽略与该操作相关的任何视图,只获取 ViewData["Output"],将其转换为 JSON 并将其发送到客户端。需要填写的空白:
TestController.cs:
JSONFilter.cs:
更新:社区回答导致JSON/POX 过滤器的更全面实施。
.net - 在 ASP.NET MVC 中,如何定义检查/应用我的自定义属性的顺序?
我目前正在研究使用从 ActionFilterAttribute 派生的自定义属性的可能性。我想用几个属性完成几件事。问题是我想确保其中一个属性首先发挥作用,而不是以任何随机顺序。
例子:
属性是否按照它们在方法装饰中提到的顺序应用?
如果没有,有没有办法为一组 [自定义] 属性定义特定序列?
.net - ASP.NET MVC、ActionFilters、静态类和传递数据
我想听听您的意见,也许对以下情况有更好的建议:
我已经定义了一个自定义的 ActionFilter 来完成一些工作并产生一些价值。我想在控制器操作和模型中使用该值。
现在,我可以使用 TempData 将该值从 ActionFilter 传递给任何控制器操作方法,然后将该值分配给传递给返回视图的所有模型。
我确信它会起作用,但是这个 TempData 将在会话中出现,在没有人真正需要它的地方和时间。该值应该在单个请求期间仅在代码中使用,之后它有效地无效。
我提出了两个选择:
在 ActionFilter 中,我在 OnActioExecuting() 的 TempData 中设置了该值,并在 OnActionExecuted() 中将其删除。我是否正确理解,在调用 OnActionExecuted 时,控制器操作已完成,响应已生成,并且此 TempData 内容尚未进入会话?
在我的任何自定义静态类(逻辑)中,我只为这个值定义一个公共属性,并在需要时使用它。这个静态字段在 OnActionExecuting() 和实际执行控制器方法之间不会丢失吗?在服务器上的请求处理期间是否有可能丢失此值的任何其他问题?
我还没有考虑过其他/更好的选择吗?
asp.net-mvc - 哪个重定向具有优先权 - 控制器操作中的重定向还是 ActionFilter 的 OnActionExecuted 中的重定向?
看来我又要干点奇怪的事了……
情况:
那么,将发生哪个重定向?控制器动作中的一个,ActionFilter 中的一个,或者两者兼而有之?
c# - 我的 asp.net-mvc 站点的 TranslateAttribute
在我当前的项目中,我有一个自定义 ViewData,它具有(除其他外)以下属性:
我所有的网址都是这样的:
http://someUrl.com/ {siteLanguage}/{restOfUrlIncludingcontrollersAndACtions}
我想创建一个捕获每个请求的 ActionAttribute,检查 siteLanguage 值是什么,并在 CustomViewData 上设置 Language 值。我当前的(非工作)代码是这样的:
第一个问题是 viewdata 永远不是 customviewdata。为什么不?
asp.net-mvc - 在 BaseController 的 OnActionExecuting 之前调用 FilterAttribute 的 OnActionExecuting
我有一个通过覆盖BaseController
将一些数据放入集合中的.ViewData
OnActionExecuting
现在我有一个ChildController
不需要该视图数据的操作。
为此,我创建了一个DontPopulateViewData
ActionFilterAttribute,它在 上设置了一个布尔值,以BaseController
防止BaseController
填充 viewdata。
问题:ActionFiltersOnActionExecuting
方法是在一个 in 之后BaseController
而不是之前调用的。
ActionFilters 是否总是OnActionExecuting
在基本控制器中被覆盖之前被调用,有没有办法解决这个问题?
asp.net-mvc - 有哪些方法可以在 ASP.NET MVC 中停止表单的多次回发?
一个常见的 Web 问题是用户多次单击表单的提交按钮,因此服务器多次处理该表单。当用户点击后退按钮提交表单并再次处理时,也会发生这种情况。
在 ASP.NET MVC 中阻止这种情况发生的最佳方法是什么?
我看到的可能性是:
- 提交后禁用按钮 - 这会绕过多次点击而不是导航
- 立即重定向接收操作 - 浏览器似乎将这些重定向排除在历史记录之外
- 在会话和表单上放置一个唯一令牌 - 如果它们匹配则处理表单 - 如果不清除表单以重新提交
还有更多吗?
这些是否有一些特定的实现?
我可以看到第三个选项被实现为带有 HtmlHelper 扩展的 ActionFilter,其方式与防伪工具类似。
期待收到您的 MVC'ers 的来信。
asp.net-mvc - 如何从 ActionFilter 访问 ModelState?
我正在构建一个ActionFilter
为简单的垃圾邮件块重用一些代码 - 基本上我所做的是我有一个Html Helper
呈现输入文本框和隐藏输入的方法,并且在 ActionFilter 我检查这两个值是否相同. 如果没有,我想利用其余的验证逻辑并将 a 添加ModelStateError
到ModelState
,但我该怎么做呢?如何ModelStateError
从 whithin 中添加一个ActionFilter
?
更新:这是我正在尝试的代码。当我测试具有此属性的控制器操作时,即使我没有传递任何所需的表单值,它ModelState.IsValid
仍然会返回:true
这是ActionMethod
:
我刚刚注意到,如果我在OnActionExecuting
方法内设置断点并点击“调试测试”,则永远不会命中断点。为什么?