C# 如何在C中的ActionLink html帮助程序中指定控制器#

C# 如何在C中的ActionLink html帮助程序中指定控制器#,c#,asp.net-mvc-3,actionlink,routevalues,C#,Asp.net Mvc 3,Actionlink,Routevalues,我有一个用ASP.NET MVC3和C和Razor开发的web应用程序 我想使用ActionLinkHTML帮助程序调用特定控制器的特定操作方法。我知道ActionLink的第二个参数指定要从默认路由调用的操作方法,这是我的Global.asax文件中唯一的一个: routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameter

我有一个用ASP.NET MVC3CRazor开发的web应用程序

我想使用ActionLinkHTML帮助程序调用特定控制器的特定操作方法。我知道ActionLink的第二个参数指定要从默认路由调用的操作方法,这是我的Global.asax文件中唯一的一个:

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Index", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
我想从主页控制器调用下载操作方法,而不是索引。这不起作用:

@Html.ActionLink("Presentation", "Download", "Home", new { topicId = topic.TopicId } )
它需要类型对象作为第三个参数,但我在web上找不到任何示例

调用特定控制器/ActionMethod需要哪些步骤?是否要在Global.asas文件中创建另一个路由

谢谢

您需要的超载是多少?html属性需要第5个参数

@Html.ActionLink("Presentation", "Download", "Home", new { topicId = topic.TopicId }, new { name="Download" )
试试这个:

@Html.ActionLink("Download", "Download", new { controller = "Home",  Id = topic.TopicId });
第三个参数object:routeValues在Asp.net MVC中用作字典。Phil Haack谈到了使用对象作为路由值的决定

更新

您的重载函数无法工作,因为您正在调用。字符串也是对象。因此,您将
“Home”
作为routeValue传递,而
new{topicId=topic.Id}
作为htmlAttributes传递

谢谢你的回答。它是MVC3中的新功能吗?在MVC2中,我记得它的工作方式与我试图做的一样(我问题中的重载)。好吧,在MVC2中应该是一样的。:)如果当前控制器中存在同名操作,则似乎不起作用谢谢您的回答。我应该使用什么html属性?重载只会指定一个带有“下载”值的HTML名称属性(.除了对绑定有用之外,我看不出使用它的原因,因为这是一个支持指定所有所需参数的重载。您可能只能使用null作为最终参数,但我不确定,所以我只使用null。如果不这样做,则会给它一个空字典。