我希望在www.mysite.com/home/details/1/lesson1中使用Url.action在mvc中创建Url

时间:2016-11-04 17:30:10

标签: c# asp.net asp.net-mvc asp.net-mvc-routing

我希望在mvc中使用Url.Action

创建网址

我的代码是

Url.Action( "Details", "Home",  new   { id= item.Id  ,title=item.Title},  "http" )

但是此代码创建了

中的链接
http://localhost:45201/Admin/Home/Details/1?title=lesson1

我想要

http://localhost:45201/Admin/Home/Details/1/lesson1

1 个答案:

答案 0 :(得分:1)

取决于您如何定义路线。

将此用于基于约定的路由

routes.MapRoute(
    name: "AdminHomeDetails",
    url: "Admin/Home/Details/{id}/{title}",
    defaults: new { controller = "Home", action = "Details" }
);

OR 将此用于属性路由:

[RoutePrefix("Admin/Home")]
public class HomeController : Controller {
    //GET Admin/Home/Details/1/lesson1
    [Route("Details/{id:int}/{title}")]
    public ActionResult Details(int id, string title) { ... }
}

用于属性路由不要忘记在基于约定的路由之前映射属性路由

public class RouteConfig {

    public static void RegisterRoutes(RouteCollection routes) {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

        //...and then convention-based routes.

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

检查Attribute Routing in ASP.NET MVC 5以了解有关属性路由的更多信息。