ASP.NET MVC控制器参数处理
问题描述:
在我的应用程序中,我有一个名为shop的字符串参数,在所有控制器都需要,但它需要使用如下代码转换:
In my application I have a string parameter called "shop" that is required in all controllers, but it needs to be transformed using code like this:
shop = shop.Replace("-", " ").ToLower();
如何在所有控制器上全局重复这一行,
谢谢,
Leo
How can I do this globally for all controllers without repeating this line in over and over? Thanks, Leo
答
写一个自定义操作过滤器,覆盖 OnActionExecuting()
过滤器到所有的控制器。 (或者简单地覆盖你的基本控制器中的 OnActionExecuting()
,如果你有一个基本控制器)。操作方法看起来像这样:
Write a custom action filter, override OnActionExecuting()
and apply the filter to all your controllers. (Or simply overriding OnActionExecuting()
in your base controller, if you have a base controller at all.) The action method would look something like this:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var parameters = filterContext.ActionParameters;
object shop;
if (parameters.TryGetValue("shop", out shop))
{
parameters["shop"] = ((string)shop).Replace("-", " ").ToLower();
}
}