如何在 ASP.NET MVC 中的 URL 之后允许额外的文本?

Posted

技术标签:

【中文标题】如何在 ASP.NET MVC 中的 URL 之后允许额外的文本?【英文标题】:How do I allow extra text after my URLs in ASP.NET MVC? 【发布时间】:2011-01-19 03:46:25 【问题描述】:

我的应用中只有这条路线:

routes.MapRoute(
    "Default",                            
    "controller/action/id",         
    new  controller = "Home", action = "Index", id = "" 
);

这适用于以下网址:

/Blah/索引 /Blah/创建 /Blah/详细信息/5

我想像这样在最后一个中添加文本:

/Blah/Details/5/Page-Title-Here-Or-Whatever

所以我的问题是:

我的路线应该是什么样子才能实现这一点?(或者如果它与路线没有任何关系......我该怎么办?)

【问题讨论】:

【参考方案1】:

MSDN 链接:http://msdn.microsoft.com/en-us/library/cc668201.aspx

routes.MapRoute( 
    "Default",                             
    "controller/action/id/*allTheRest",          
    new  controller = "Home", action = "Index", id = "", allTheRest=""  
); 

函数签名应该类似于

    public ActionResult MyAction(int? id, string rest)
    
        this.TempData["ID"] = id ?? -1000;
        this.TempData["REST"] = rest ?? "Not Provided";
        return View();
    

【讨论】:

这不太适合我...我需要重新启动 IIS 或清除某处的缓存吗? 您使用的是哪个版本的 MVC?这是几周后将包含在 VS2K10 中的 MVC 2 版本。 我从头开始创建了一个项目,这确实有效,谢谢!我只需要弄清楚为什么它在我现有的 IIS 托管项目中不起作用... 在新问题中发布您的路线,有人会帮助您调试。发布您希望匹配的 URL。

以上是关于如何在 ASP.NET MVC 中的 URL 之后允许额外的文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中使用 asp-controller 或 asp-action 访问我的 url 中的多个层

如何通过更改 ASP.NET MVC 中的 Url 来阻止对控制器的访问?

如何正确处理 ASP.NET MVC 中的 404?

ASP.NET中的MVC如何使用?

ASP.NET中的MVC如何使用?

由于不区分大小写的 URL 和默认值,如何避免 ASP.NET MVC 中的重复内容?