我正在使用Asp.net MVC制作应用程序,
我有一个动态生成的网址 HTTP:\本地主机:4351 \用户名
我想要的功能是,如果用户将其复制到地址栏,它将转移到新地址 像
的http:\本地主机:4355 \用户\轮廓\用户名
我有一个名为users的控制器和一个名为profile的动作
如何实现此功能?
答案 0 :(得分:0)
您可以将路线添加到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");
}
答案 1 :(得分:0)
您需要两个MapRoutes。
目前还不清楚您是否将“用户名”视为实际用户的名称或网址的一部分。所以我将展示两种方式:
方法1:
如果您的路径是文字:http:\ localhost:4351 \ username 和文字路径:http:\ localhost:4355 \ users \ profile \ username
routes.MapRoute("Route1", "Username", new { controller = "Users", action = "Profile" });
routes.MapRoute("Route2", "Users\Profile\Username", new { controller = "Users", action = "Profile" });
如果用户名是用户的实际名称,请执行以下操作:
方法2:
示例:http:\ localhost:4351 \ mySpecialUsername 和http:\ localhost:4351 \ users \ profile \ 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));
}
希望有所帮助!