2

我有一个使用C#Razor在ASP.NET MVC3中开发的 Web 应用程序。

我想通过使用ActionLink HTML 帮助器来调用特定控制器的特定操作方法。我知道 ActionLink 的第二个参数指定要从Default route调用的 Action Method ,这是我的Global.asax文件中唯一的一个:

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Index", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

我想从Home Controller 而不是Index调用Download Action Method 。这不起作用:

@Html.ActionLink("Presentation", "Download", "Home", new { topicId = topic.TopicId } )

它需要一个类型 Object 作为第三个参数,但我在网上找不到任何示例。

调用特定的 Controller/ActionMethod 需要哪些步骤?我应该在我的 Global.asas 文件中创建另一条路线吗?

谢谢

4

2 回答 2

22

试试这个:

@Html.ActionLink("Download", "Download", new { controller = "Home",  Id = topic.TopicId });

第三个参数 object: routeValues 在 Asp.net MVC 中用作字典。Phil Haacked发表了关于使用对象作为路由值的决定的博客。

更新
您的重载函数不起作用,因为您正在调用此方法字符串也是对象。因此,您将"Home"作为 routeValues 和new { topicId = topic.Id}htmlAttributes 传递。:)

于 2011-07-27T10:12:26.613 回答
0

这是您需要超载吗?您将需要 html 属性的第 5 个参数。

@Html.ActionLink("Presentation", "Download", "Home", new { topicId = topic.TopicId }, new { name="Download" )
于 2011-07-27T10:04:07.150 回答