我正在尝试为控制器创建一些URL约束,以防止空引用异常。
例如
/folder/edit/3应该没问题
/folder/edit/asdf应该没有问题
我不想在每个操作方法上都添加正则表达式,而是希望对此使用URL约束。
我现在面临的问题是缺省路由捕获所有请求,或者如果我将该约束添加到缺省路由中,像http://host.tld/这样的标准请求将不再有效。
我试图添加的约束是
routes.MapRoute(
"RouteWithContraint",
"folder/edit/{id}",
new { controller="folder", action="edit", id="" },
new { id = @"\d+" }
);有谁能给我一个解决这个问题的建议吗?或者,也许有人知道DRY上"IsANumber“检查ids的最佳实践?
诚挚的问候,
戈登
发布于 2009-08-06 09:38:17
如何创建自定义ActionFilterAttribute来检查某些操作和/或控制器的类型?继承自ActionFilterAttribute的类的OnActionExecuting方法示例:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.RouteData.Values["action"] == "edit" && !IsProperTypeofId())
RedirectToRoute(filterContext, new { controller = "General", action = "Error", id = 401 });
base.OnActionExecuting(filterContext);
}发布于 2010-02-11 04:54:53
添加路由的顺序很重要。当请求进入时,会逐个检查路由,直到找到匹配的路由。因此,您需要按从最具体到最不具体的顺序对路由进行排序。
你可能已经尝试过了,但是如果你在默认路由之前添加你的自定义路由,你会更幸运吗?
https://stackoverflow.com/questions/1231952
复制相似问题