返回RedirectToAction(...)漂亮的网址

问题描述:

有保持作为RouteConfig.cs映射调用RedirectToAction方法时定义了我的链接的格式,任何可能的方式?返回RedirectToAction(...)漂亮的网址

EX [只是为了测试]:

我有这样的路线:

routes.MapRoute(
"Token Verification", 
"Registration/TokenVerification/{ConfernceId}/{TokenType}/{TokenId}/{Email}", 
new{ 
    controller="Registration", 
    action="TokenVerification", 
    ConfernceId= 0, 
    TokenType='\0', 
    TokenId="", 
    Email="" 
} 
); 

我可以把这个链接,我的行动,如果被正确地路由:

http://localhost:49619/Registration/TokenVerification/2/R/asdasdasd/[email protected]

但是,如果我叫RedirectToAction,它会生成以下url

http://localhost:49619/Registration/TokenVerification?ConfernceId=2&TokenType=R&Email=someone%40somewhere.com

它也在努力,但它是不漂亮了!

有什么建议吗?

+1

TokenId和电子邮件look可选的,因为你是将它们设置为string.Empty。这些是路径值,所以它们必须具有路由才能工作的值。 –

+0

@EmmaMiddlebrook,谢谢你,这是我遇到的路线 – simsim

使用RedirectToRoute(从MSDN)生成URL这是在规定航线格式。

return RedirectToRoute("Token Verification", new 
     { 
      ConfernceId = 0, 
      TokenType = "0", 
      TokenId = "0", 
      Email = "0" 
     }); 

如果要生成链接,请检查下面的perocess。 使用Url.RouteUrl(检查MSDN资源)。比方说 -

@Url.RouteUrl("DefaultApi", new { httproute=true, controller="Albums", id=3}) 

会产生/api/Albums/3

在你的情况下,它应该是 -

@Url.RouteUrl("Token Verification", new 
{ 
    controller = "Registration", 
    action = "TokenVerification", 
    ConfernceId = 0, 
    TokenType = "0", 
    TokenId = "0", 
    Email = "0" 
}) 

而且它会产生 - /Registration/TokenVerification/0/0/0/0

+0

它似乎是合乎逻辑的解决方案的问题,但我不能让它的工作,我不断收到'在路由表中的路由我搜索所提供的values.'匹配网上类似的问题,但仍然无法解决它。我按照建议的[在这里]传递相同类型和相同顺序的参数,如在定义的路由中(http://stackoverflow.com/questions/5690/mvc-preview-4-no-route-in-the-route-table - 匹配 - 所述提供的值) – simsim