2016-01-23 86 views
0

有保持作爲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

回答

1

使用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