【问题标题】:c# MVC routing with constantsc# MVC 路由与常量
【发布时间】:2012-03-01 14:45:13
【问题描述】:

我正在尝试在具有以下路由的页面上生成操作链接: /{controller}/{type}/{sub}

链接需要转到: /{controller}/{type}/{sub}/new

如何在对象或 RouteValueDictionary 中指定 url 的“/new”部分,以便将其传递给 HTML.ActionLink?

StackOverflow 不允许我再过 8 小时回答我的问题...所以:

谢谢贾斯汀。 您的建议有效,但为了完整起见,我发现了使用 Html.ActionLink 方法的方法:

您只需要指定解析该路由的方法的 ActionName。该框架似乎会自动确定您希望它位于与当前页面相同的路径上。

所以,如果你的路线是:

routes.MapRoute(
            "New", // Route name
            "{controller}/{type}/{sub}"/new, // URL with parameters
            new {controller = "DefaultController", action = "Create", id = UrlParameter.Optional});

链接是:

Html.ActionLink("Create New Page", "Create")

批准贾斯汀的方法,因为它对我有用

【问题讨论】:

    标签: c# asp.net-mvc routing


    【解决方案1】:

    据我所知,ActionLink 的默认实现不支持这个,所以你有以下选择:

    在这种情况下手动构建它(我不在 Visual Studio 前面,所以语法可能有点不对)

    <a href="@Url.Action(
        "Controller", "Method", new { type = "type", sub = "sub" }));/new">
        link text</a>
    

    或者,你可以create a new helper method 封装这样的东西,如果它经常发生的话。

    【讨论】:

      【解决方案2】:
       routes.MapRoute(
                      "New", // Route name
                      "{controller}/{type}/{sub}"/{new}, // URL with parameters
                      new {controller = "DefaultController", action = "Index", id = UrlParameter.Optional});
       routes.MapRoute(
                      "Default", // Route name
                      "{controller}/{type}/{sub}", // URL with parameters
                      new {controller = "DefaultController", action = "Index"});
      

      应该是这样的

      【讨论】:

      • 我认为问题不是关于路由,而是关于创建链接。
      【解决方案3】:

      我会按照上面的 AD.Net 建议创建路由,然后使用 Html.RouteLink 扩展助手创建链接,这样,如果您决定更改 url/链接,路由引擎会自动获取它

      routes.MapRoute(
                      "New", // Route name
                      "{controller}/{type}/{sub}"/{new}, // URL with parameters
                      new {controller = "DefaultController", action = "Index", id = UrlParameter.Optional});
      

      Html.RouteLink("Create New Page", "New")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-30
        • 2017-06-10
        • 2015-06-13
        • 1970-01-01
        • 2012-01-26
        • 2011-10-28
        • 2012-10-06
        • 1970-01-01
        相关资源
        最近更新 更多