【问题标题】:ASP.NET MVC: Html helper to generate url without action specifiedASP.NET MVC:无需指定操作即可生成 url 的 Html 助手
【发布时间】:2013-03-20 14:11:07
【问题描述】:

在 ASP.NET MVC 中有没有一种方法可以生成带有 Html.helper 的 url, 没有指定操作(从而将其路由到默认操作)?

基本上我想要一个输出 {lang}/controller 的 url,即:~/EN/Home

但 MVC 中的每个 html-helper 似乎都要求指定特定的控制器操作,甚至

<a href="@Url.Action(null, @Resources.Home">Click here</a>

输出 EN/Home/PartialViewName 而不仅仅是 EN/Home....(我在局部视图上生成它)

更新 1:

显然,“索引”操作没有出现在生成的 url 中,即:

@Html.ActionLink("Click here", "Index", @Resources.Home)

输出 /EN/Home

但如果你想添加参数,不幸的是问题仍然存在。以下不输出正确的url(即EN/Home/3)

@Html.ActionLink("Click here", "Index", @Resources.Home, new { id = home.Id }, null)

<a href="@Url.Action(null, @Resources.Home)/@home.Id">Click here</a>

更新 2:

暂时这样解决:

@Html.ActionLink("Click here", "Index", string.Format(Resources.Home + "/" + home.Id))

但这不能是解决此问题的唯一/正确解决方案吗?

【问题讨论】:

    标签: asp.net-mvc url


    【解决方案1】:

    像下面这样为 home/{id} 添加路由怎么样?

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

    然后,当您创建 URL 时,它会为您提供 /home/32(如果生成的 ID 为 32)

    【讨论】:

      【解决方案2】:

      如何创建您自己的帮助程序来生成您想要的 URL。它甚至可以是对 URL.Action 的 mvc 实现的简单调用,然后将操作名称替换为您想要的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-23
        相关资源
        最近更新 更多