如何为www.website.com/profile创建路线

时间:2016-03-03 17:27:29

标签: c# asp.net-mvc routes

我正在编写一个网站,就像我们可以从以下网址访问用户个人资料的平台:

www.mywebsite.com/DanielVC

具有该配置文件详细信息的控制器如下

  • 控制器:Perfil
  • 行动:Perfil

我已经为所有申请提供了以下路线:

{
    "version": "0.1.0",
    "command": "tsc",
    "isShellCommand": true,
    "showOutput": "silent",
    "args": ["-p", "."],
    "problemMatcher": "$tsc"
}

我已经尝试创建以下路线:

routes.MapRoute(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Pages", action = "Index", id = UrlParameter.Optional }
);

但没有工作

2 个答案:

答案 0 :(得分:2)

把它放在(以上)默认路线上。

routes.MapRoute(
  name: "Perfil",
  url: "{id}",
  defaults: new { controller = "Pages", action = "Index", id = UrlParameter.Optional }
);

此外,这将导致每个路由被重定向到 Perfil 路由。如果找不到用户名(例如mywebsite.com/randomuserthatdoesntexist)和/或其他路由(mywebsite.com/contact),则必须在该操作中创建重定向。

修改

您的方法示例

public class PagesController : Controller
{
    public ActionResult Index(string id)
    {
        if (matchesOtherRoute(id))
            RedirectToAction("OtherAction", "OtherController");
        if (!userExists(id))
            RedirectToAction("NotFoundAction", "ErrorController");
        // Do other stuff here
     }
}

答案 1 :(得分:0)

它应该是这样的 routes.MapRoute(   名称:" Perfil",    url:" Pages / {id}",   默认值:new {controller =" Perfil",action =" Perfil",id = UrlParameter.Optional} );