首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现属性路由

问实现属性路由
EN

Stack Overflow用户
提问于 2018-11-24 21:12:04
回答 1查看 140关注 0票数 0

我正在设法掌握MVC中的属性路由。

最初,我的sitemap控制器的路由如下:

代码语言:javascript
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "SitemapXml",
            url: "sitemap.xml",
            defaults: new { controller = "Sitemap", action = "Index" }

        // Additional mappings...

    }
}

效果很好。但是,我试着注释掉上面的SitemapXml路由,而是在控制器中添加一个属性。

代码语言:javascript
复制
// GET: Sitemap
[Route("sitemap.xml")]
public ActionResult Index()
{
    // Generate sitemap
}

我还在RegisterRoutes末尾添加了下面一行

代码语言:javascript
复制
routes.MapMvcAttributeRoutes();

但是现在,当我导航到domain.com/sitemap.xml时,我得到了一个未找到的页面。

问题:

  1. 要使我的路由属性正常工作,我遗漏了哪些步骤?
  2. 由于现在可以在两个位置(作为属性或直接在RouteCollection中设置)指定映射,当这两个位置相互矛盾时会发生什么?
EN

回答 1

Stack Overflow用户

发布于 2018-11-26 01:36:00

如果删除扩展.xml,则属性路由将完美地工作。在实际工作中使用扩展相关代码比较好。

还要确保您的路由配置看起来类似(routes.MapMvcAttributeRoutes();应该存在于默认路由之前)

代码语言:javascript
复制
routes.MapMvcAttributeRoutes();
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
    );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53462409

复制
相关文章

相似问题

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