MVC Futures 中的强类型 Html.ActionLink() 辅助扩展不适用于区域

发布于 2024-08-27 15:22:01 字数 604 浏览 11 评论 0原文

在使用 ASP.NET MVC 2 Futures 的强类型 HtmlHelper.ActionLink() 扩展方法时,我注意到一些奇怪的行为。当我使用它链接到某个区域中的控制器时,我必须在此控制器上使用以下属性,

[ActionLinkArea("SomeArea")]

它正确链接到默认区域中 SomeArea 中的控制器的操作。问题是当我想从 SomeArea 链接回位于默认区域的控制器操作时。该链接显示时带有“/SomeArea/”前缀。我使用的解决方法是:

[ActionLinkArea("")]

在位于默认区域的所有控制器上(使用继承)。

这看起来很奇怪,因为在我看来,这应该是该方法的默认行为。在这个扩展方法上使用 .NET Reflector 我注意到错误就在这里:

return helper.RouteLink(linkText, routeValuesFromExpression, new RouteValueDictionary(htmlAttributes));

所以它实际上是 HtmlHelper 的默认行为。

I noticed some odd behaviour when using the strongly typed HtmlHelper.ActionLink() extension method from ASP.NET MVC 2 Futures. When I use it to link to a controller in an area I have to use the following attribute on this controller

[ActionLinkArea("SomeArea")]

It links properly to the actions of the controller located in SomeArea from the default area. The problem is when I want to link back to a Controller action located in the default area from within SomeArea. The link appears with "/SomeArea/" prefix. The workaround I use is:

[ActionLinkArea("")]

on the controller on all controllers that are located in the default area (using inheritance).

This seems odd because in my opinion that should be the default behavior of this method. Using .NET Reflector on this extension method I noticed that the error lies here:

return helper.RouteLink(linkText, routeValuesFromExpression, new RouteValueDictionary(htmlAttributes));

So it's actually the default behaviour of the HtmlHelper.

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

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

发布评论

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

评论(1

烟织青萝梦 2024-09-03 15:22:01

MVC 2 Futures 中的已知问题 - 与 http://forums.asp.net 相同的根本原因/p/1535698/3732346.aspx

从我们的内部数据库中,如果您想自己修补文件并重新编译 MVC Futures:

该错误位于 LinkBuilder.cs 的第 21 行。
方法调用 GetVirtualPath()
应该是 GetVirtualPathForArea()。

Known issue in MVC 2 Futures - same underlying cause as http://forums.asp.net/p/1535698/3732346.aspx.

From our internal database, if you wanted to patch the file and recompile MVC Futures yourself:

The bug is in LinkBuilder.cs, line 21.
The method call GetVirtualPath()
should be GetVirtualPathForArea().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文