动态MVC路由:动作名称

时间:2013-11-19 08:50:40

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing mvcroutehandler

我有控制器名称:关于和操作名称:索引。但我希望URL就像这样(动作名称将是动态的)

www.example.com/about/aaa www.example.com/about/bbb www.example.com/about/ccc

路由

  routes.MapRoute(
                name: "About",
                url: "{controller}/{name}",
                defaults: new { controller = "About", action = "Index"}

控制器

public class AboutController : Controller
    {
        //
        // GET: /About/

        public ActionResult Index(string name)
        {

            return View();
        }

    }
}

查看

@{
    ViewBag.Title = "Index";
}

<h2>Index About</h2>

3 个答案:

答案 0 :(得分:4)

这应该有用。

routes.MapRoute(
    name: "About",
    url: "About/{name}",
    defaults: new
    {
        controller = "About",
        action = "Index"
    });

确保您的默认路线存在,并在关于路线

之后

答案 1 :(得分:0)

routes.MapRoute(
    name: "About",
    url: "about/{name}/{id}",
    defaults: new { controller = "About", action = "Index", id=UrlParameter.Optional}

答案 2 :(得分:0)

您可以将ActionResult名称作为参数传递:

 public ActionResult Index(string name)
        {

            return View(name);
        }


public ActionResult First()
        {

            return View();
        }

public ActionResult Second()
        {

            return View();
        }

在视图中:

@Html.ActionLink("Get Action named Firts" "Index", "Home", new {name = "First"}, null)