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))
但这不是解决此问题的唯一/正确方法吗?
答案 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实现,然后用你想要的代替动作名称。