加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Stack Overflow问题路由

发布时间:2020-12-16 00:11:07 所属栏目:asp.Net 来源:网络整理
导读:如果您查看SO问题URL,您将看到ID和“SLUG”被传递给Questions控制器: https://stackoverflow.com/questions/676934/what-do-you-need-to-write-your-own-blog-engine.我感到有趣的是您可以更改URL的“SLUG”部分,而不会影响应用程序的路由能力请求 example.
如果您查看SO问题URL,您将看到ID和“SLUG”被传递给Questions控制器: https://stackoverflow.com/questions/676934/what-do-you-need-to-write-your-own-blog-engine.我感到有趣的是您可以更改URL的“SLUG”部分,而不会影响应用程序的路由能力请求 example.我能想到的唯一方法就是接受一个id和一个“SLUG”的路由,并在slug上使用路由约束来确保它遵循一个模式.我不得不使用约束来确保这两个变量不会导致此路由匹配所有请求.有没有人有更好的方法来实现这一点,或任何更高级的路由方案的例子?

加成:

我意识到SLUG是为了人类的可读性,我想在另一个应用程序中复制此功能.实现这一目标的最佳方法是什么?

路线:

routes.MapRoute(
    "Id + Slug",// Route name
    "Test/{id}/{slug}",// URL with parameters
    new                   // Parameter defaults
    {
        controller = "Test",action = "Details",id = "",slug = "" 
    },new { slug = new SlugConstraint() }
);

简单约束:

public class SlugConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext,Route route,string parameterName,RouteValueDictionary values,RouteDirection routeDirection)
    {
        string value = values[parameterName].ToString();

        return value.Contains("-");
    }
}

解决方法

是 this你正在寻找…它没有定义最后的slu ..

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读