ASP.NET MVC:生成url而不指定操作的Html帮助程序

时间:2013-03-20 14:11:08

标签: asp.net-mvc url

ASP.NET MVC中是否有一种方法可以使用Html.helper 生成一个不带指定操作的URL(从而将其路由到默认操作)?

基本上我想要一个输出{lang} / controller的网址,即:〜/ 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 /主页

但是如果你想添加参数,遗憾的是问题仍然存在。以下不输出正确的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))

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

2 个答案:

答案 0 :(得分:1)

如何为家庭/ {id}添加路由,如下所示?

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

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

答案 1 :(得分:0)

如何创建自己的助手来生成所需的URL。它甚至可以简单地调用URL.Action的mvc实现,然后用你想要的代替动作名称。