我正在使用Asp.net MVC應用程序,Asp.net MVC3幫助有關URL的
我有一個網址這是動態生成像 的http:\本地主機:4351 \用戶名
我想要的功能,如果用戶it'llredirect地址欄複製到新的地址 像
的http:\本地主機:4355 \用戶\輪廓\用戶名
我控制器命名用戶和動作命名profile def在其中注入
我該如何實現此功能?
我正在使用Asp.net MVC應用程序,Asp.net MVC3幫助有關URL的
我有一個網址這是動態生成像 的http:\本地主機:4351 \用戶名
我想要的功能,如果用戶it'llredirect地址欄複製到新的地址 像
的http:\本地主機:4355 \用戶\輪廓\用戶名
我控制器命名用戶和動作命名profile def在其中注入
我該如何實現此功能?
需要兩個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));
}
希望幫助!
您可以添加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");
}
我試過你的解決方案,但是當我輸入http:\ \ localhost:4351 \ username它顯示錯誤消息msg IControllerFactory'MyApplication.Web.Mvc.SpringControllerFactory'沒有爲名稱'username'返回控制器。 –
您如何區分直接從URL「http:\ localhost:4355 \ users \ profile \ username」生成(並且用戶可見)的URL,如'http:\ localhost:4351 \ username'用戶在地址欄中輸入? – saintedlama
生成的URL和用戶可見的URL都是相同的,即我顯示生成的URL,用戶可以將其複製並粘貼到地址欄:) –