首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字ID的URL约束

数字ID的URL约束
EN

Stack Overflow用户
提问于 2009-08-05 08:49:40
回答 2查看 277关注 0票数 1

我正在尝试为控制器创建一些URL约束,以防止空引用异常。

例如

/folder/edit/3应该没问题

/folder/edit/asdf应该没有问题

我不想在每个操作方法上都添加正则表达式,而是希望对此使用URL约束。

我现在面临的问题是缺省路由捕获所有请求,或者如果我将该约束添加到缺省路由中,像http://host.tld/这样的标准请求将不再有效。

我试图添加的约束是

代码语言:javascript
复制
routes.MapRoute(
    "RouteWithContraint",
    "folder/edit/{id}",
    new { controller="folder", action="edit", id="" },
    new { id = @"\d+" }
);

有谁能给我一个解决这个问题的建议吗?或者,也许有人知道DRY上"IsANumber“检查ids的最佳实践?

诚挚的问候,

戈登

EN

回答 2

Stack Overflow用户

发布于 2009-08-06 09:38:17

如何创建自定义ActionFilterAttribute来检查某些操作和/或控制器的类型?继承自ActionFilterAttribute的类的OnActionExecuting方法示例:

代码语言:javascript
复制
    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);
    }
票数 1
EN

Stack Overflow用户

发布于 2010-02-11 04:54:53

添加路由的顺序很重要。当请求进入时,会逐个检查路由,直到找到匹配的路由。因此,您需要按从最具体到最不具体的顺序对路由进行排序。

你可能已经尝试过了,但是如果你在默认路由之前添加你的自定义路由,你会更幸运吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1231952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档