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

发布于 2024-11-26 11:01:39 字数 887 浏览 5 评论 0原文

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

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

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

我想从Home控制器而不是Index调用Download操作方法。这不起作用:

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

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

调用特定的控制器/操作方法需要哪些步骤?我应该在 Global.asas 文件中创建另一条路线吗?

谢谢

I have a web application developed in ASP.NET MVC3 with C# and Razor.

I would like to call a specific Action Method of a specific Controller by using the ActionLink HTML helper. I know that the second parameter of ActionLink specifies the Action Method to be called from the Default route, which is the only one in my Global.asax file:

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

I would like to call the Download Action Method from the Home Controller instead of Index. This does not work:

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

It requires as third parameter a type Object but I cannot find on the web any example.

What are the steps needed in order to call a specific Controller/ActionMethod? Shall I create another route in my Global.asas file?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独岁月 2024-12-03 11:01:39

试试这个:

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

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

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

Try this one:

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

The third parameter, object: routeValues, is used as dictionary in Asp.net MVC. Phil Haacked blogged about the decision for using object as route values.

update:
Your overload function is not working because you are calling this method. String is also object. So, you are passing "Home" as routeValues and new { topicId = topic.Id} as htmlAttributes. :)

驱逐舰岛风号 2024-12-03 11:01:39

是您需要的重载吗?您将需要 html 属性的第五个参数。

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

Is this the overload you require? You will need the 5th parameter for html attributes.

@Html.ActionLink("Presentation", "Download", "Home", new { topicId = topic.TopicId }, new { name="Download" )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文