关于URL的Asp.net MVC3帮助

时间:2012-01-19 05:37:14

标签: asp.net-mvc-3

我正在使用Asp.net MVC制作应用程序,

我有一个动态生成的网址 HTTP:\本地主机:4351 \用户名

我想要的功能是,如果用户将其复制到地址栏,它将转移到新地址  像

的http:\本地主机:4355 \用户\轮廓\用户名

我有一个名为users的控制器和一个名为profile的动作

如何实现此功能?

2 个答案:

答案 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));
}

希望有所帮助!