2012-12-25 44 views
0

在做重定向到動作後,MVC中有沒有一種方法可以指定瀏覽器url地址?在我的代碼,我有如何在Asp.NET MVC中指定url地址重定向到動作

RedirectToAction("myaction", "mycontroller", new {arg1= "height", arg2="weight"}) 

,在瀏覽器中顯示的地址是:

http/mywebsite/mycontroller/myaction?arg1=height&arg2=weight 

我想要出現在瀏覽器的網址,但就是:

http://mywebsite/height/weight 

有什麼辦法可以做到這一點?

+0

哪種語言和MVC框架您使用的? –

+0

請停止將「ASP.NET MVC」簡稱爲「MVC」。一個是框架,而另一個是獨立於語言的設計模式。這就像打電話給IE - 「互聯網」 –

回答

0

您需要添加特定的路線達致這,僅僅是圖路線添加到您的應用程序啓動中的Global.asax.cs:

protected void Application_Start() 
{ 
    RouteTable.Routes.MapRoute("myRouteName", 
     "/{height}/{weight}", 
     new { controller = "mycontroller", action = "myaction" }, 
     new[] { "Namespace.Of.My.Controller" }); 
} 
+0

Kronos,非常感謝答案。我的應用程序更復雜。我的應用程序允許用戶創建虛擬資源,例如我擁有的身高/體重示例。我實在無法預先定義他們可能定義的內容,因此,身高/體重僅僅是一個例子。它可能更多,height1/weight1等(所有這些虛擬資源映射相同的內部資源,但我不希望用戶看到它們)。我真的無法用MapRoute對這樣的列表進行硬編碼。無論解決方案如何,它在運行時都需要靈活。如果您有任何想法,請告訴我。 -thx – user1780105

+0

我相信,在許多基於MVC的CMS中,您可以在應用程序生命週期中隨時映射dynamical。 – Kronos

+0

我知道你想幹淨的URL,但我不認爲重寫URL是一個好方法。它會給你帶來一系列新的問題。例如,你可能必須重新讀取這些URL,而在我不起眼的選擇中,它主要是在現有的基礎上重建MVC路由系統。或者,也許我根本不明白你想要什麼,祝你好運:) – Kronos