asp.net-mvc - Asp.net mvc route 在通配符末尾删除数字文件夹

标签 asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

所以我们有一个路由设置,最后有一个通配符来捕获文件路径,路由可能如下所示:

/{browserName}/{browserVersion}/{locale}/{*packageName}

当我们尝试这样的路径时,问题就出现了:

/FF/3/en-US/scripts/packages/6/super.js

最终作为 packageName 传递给 Controller ​​的是:

/scripts/packages/super.js

使用路由测试程序也会发生这种情况,所以我们完全不知道为什么会这样。如果您将 6 替换为字符串,则它可以工作,如果您在 6 之前添加另一个数字文件夹,它确实会被包含在内,因此如果最后一个文件夹是数字,它似乎只是删除。有谁知道这是为什么?

最佳答案

我在VS2008中创建了默认的asp.net mvc2项目,修改了以下代码:
在 global.asax.cs 我有这个代码:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "test", // Route name
            "{browserName}/{browserVersion}/{locale}/{*packageName}",
            new { controller = "Test", action = "Index", browserName = "IE", browserVersion = "8", locale = "en-US" , packageName = UrlParameter.Optional } // Parameter defaults
        );
    }

接下来我添加了一个TestController:
public class TestController : Controller
{
    public ActionResult Index(
        string browserName, 
        string browserVersion, 
        string locale, 
        string packageName)
    {
        return View();
    }
}

和一个空的索引 View :
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>


指数


索引




为方便起见,我在 site.master 中为您指定的网址添加了一个链接:
<li><a href="/FF/3/en-US/scripts/packages/6/super.js">Test</a></li>

接下来,我在 TestController 的 Index 操作中设置断点。
当我将鼠标悬停在 packageName 参数上时,我看到“scripts/packages/6/super.js”

所以我无法重现你得到的行为。

你用的是VS2008和MVC2还是其他版本?

关于asp.net-mvc - Asp.net mvc route 在通配符末尾删除数字文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3025117/

相关文章:

c# - ASP.NET MVC Html.EnumDropDownListFor 选定值

c# - EditorFor() 可以用来创建 &lt;input type ="file"> 吗?

jquery - mvc中jquery无法获取json数据

asp.net-mvc - .net mvc 路由默认 Controller / Action 但不是默认参数

c# - 如何链接到一个区域的根目录?

asp.net-mvc - 为什么使用 SignalR 从 MVC 应用程序推送消息无法到达客户端?

javascript jquery 为什么我的格式化日期从实际值中减去 1 天

javascript - 将 Razor 代码分配给 JavaScript 变量时出现意外标记非法

visual-studio-2008 - 使用 T4MVC 时的命名空间错误

c# - 使用属性路由时如何获取 Mvc 5 Controller 的 ActionDescriptor?