2013-10-24 66 views
0

有谁知道是否有可能在MVC中区分大小写路由。MVC4中的区分大小写路由

我想要如下指出不同的文章。

例如

http://my.ie/uRl - >商务部1

http://my.ie/Url - >商务部2

很想听到的话,可以做到这一点。

+0

我从来没有见过url区分大小写 –

+1

@Murali:真的吗?因为IIS不区分大小写,但基于nix的服务器已经很长时间了(主要与文件系统区分大小写 - “foo.txt”与“FOO.txt”不同)。 –

回答

0

你可以使用路由器约束和正则表达式这样的:

routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     new { id = @"\d+", [email protected]"[A-Z]+" } //Parameter constraints 
     ); 

所以,想想约束你想在正则表达式的条款适用

0

由于MVC是一个IIS平台(和Windows本身是不敏感的)我不知道你是否会有很多运气。但是,如果您使用它来提供文件,您可以创建一个后备路线,然后再向前走一步(并对其进行适当的解析)。例如

routes.MapRoute(
    "File_Fetch", 
    "{filename}", 
    new { controller = "File", action = "Fetch", filename = UrlParameter.Optional }, 
    new { filename = @"^.+$" } 
); 

public class FileController : Controller 
{ 
    public ActionResult Fetch(String filename) 
    { 
     // /Url -> filename = "Url" 
     // /uRl -> filename = "uRl" 
     return File(...); 
    } 
} 

所以现在,而不是试图用路由者区分情况下,你可以询问传入的参数和服务于它,你认为合适。