2012-01-19 26 views
0

我正在使用Asp.net MVC應用程序,Asp.net MVC3幫助有關URL的

我有一個網址這是動態生成像 的http:\本地主機:4351 \用戶名

我想要的功能,如果用戶it'llredirect地址欄複製到新的地址 像

的http:\本地主機:4355 \用戶\輪廓\用戶名

我控制器命名用戶和動作命名profile def在其中注入

我該如何實現此功能?

+0

您如何區分直接從URL「http:\ localhost:4355 \ users \ profile \ username」生成(並且用戶可見)的URL,如'http:\ localhost:4351 \ username'用戶在地址欄中輸入? – saintedlama

+0

生成的URL和用戶可見的URL都是相同的,即我顯示生成的URL,用戶可以將其複製並粘貼到地址欄:) –

回答

0

需要兩個MapRoutes。

目前還不清楚您是否將用戶名稱作爲實際用戶的名稱或URL的一部分。因此,我將展示兩種方式:

方法1:

是,如果你的路徑是文字:HTTP:\本地主機:4351 \用戶名 和文字路徑:http:\本地主機:4355 \用戶\輪廓\用戶名

routes.MapRoute("Route1", "Username", new { controller = "Users", action = "Profile" }); 
routes.MapRoute("Route2", "Users\Profile\Username", new { controller = "Users", action = "Profile" }); 

如果用戶名的意思是用戶實際名稱,然後做到這一點:

方法2:

例如:http:\本地主機:4351 \我SpecialUsername 和http:\本地主機:4351 \用戶\輪廓\ mySpecialUsername

routes.MapRoute("Route1", "{Username}", new { controller = "Users", action = "Profile" }); 
routes.MapRoute("Route2", "Users/Profile/{Username}", new { controller = "Users", action = "Profile" }); 

對於方法2,你在你的控制器動作應該是這樣的:

// Example 
public ActionResult Profile(string Username) 
{ 
    return Content(string.Format("Username: {0}", Username)); 
} 

希望幫助!

0

您可以添加ROURE到的Global.asax.cs文件:

routes.MapRoute(
       "UsernameRoute", // Route name 
       "{username}", // URL with parameters 
       new { controller = "Home", action = "Redirect" } 
      ); 

,並添加以下行動HomeController的:

public ActionResult Redirect(string username) 
     { 
      //Check if user exists 
      bool userExists = true; 
      if (userExists) 
      { 
       return RedirectToAction("Profile", "User", new { id = username }); 
      } 

      return RedirectToAction("Index"); 
     } 
+0

我試過你的解決方案,但是當我輸入http:\ \ localhost:4351 \ username它顯示錯誤消息msg IControllerFactory'MyApplication.Web.Mvc.SpringControllerFactory'沒有爲名稱'username'返回控制器。 –