【问题标题】:How do I create an ActionLink to the Index action of a different controller?如何创建指向不同控制器的索引操作的 ActionLink?
【发布时间】:2012-08-25 19:48:12
【问题描述】:

如何更改以下代码以生成正确的 URL?

注意:ActionLink 是从与 DomainsController 不同的控制器生成的。

@Html.ActionLink("Domains", "Index", "Domains", new { id = item.Name }, null)

目标是查看以下网址。

/Domains/ItemName

我得到的是:

/Domains/Index/ItemName

非常感谢任何帮助。

【问题讨论】:

    标签: asp.net-mvc html.actionlink


    【解决方案1】:

    奇怪的路由:)

    这里有快速而肮脏的解决方案:

    @{string link= "Domains/" + item.Name;}
    @Html.ActionLink("Domains", "", link, null, null)
    

    【讨论】:

    • 您对正确的 URL 有什么建议? /项目名称/域?这更有意义,但我也不确定如何实现。目标是拥有一个用户友好的 URL,显示与特定项目关联的域。
    • 这取决于您的结构、安全要求...我会研究路由选项以找到一个优雅的解决方案,这里是 MVC 资源的链接,并包含路由文章部分:msdn.microsoft.com/en-us/library/gg416514(VS.98).aspx
    【解决方案2】:

    您的要求有点不切实际。你当然可以通过类似

    的方式实现这一目标
    routes.MapRoute(null,
                    "Domains/{id}",
                    new { controller = "Domains", action = "Index" }
    );
    

    但是,您必须为所有其他 DomainsController 操作方法创建显式路由规则,否则您将无法简单地使用例如/Domains/OtherAction 不再是 - 它将被上述规则捕获并解释为使用 id == "OtherAction" 调用 Index 方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多