1

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:

显然,“索引”动作没有出现在生成的网址中,即:

@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))

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

4

2 回答 2

1

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

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

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

于 2013-08-20T10:39:08.820 回答
0

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

于 2013-08-20T10:52:50.680 回答