2012-08-14 70 views
2

如何查找破坏的Html.ActionLinks?查找破坏的控制器操作

例如查找Html.ActionLink("View", "ViewCustomer", "Customer")其中CustomerController.ViewCustomer()不再存在。

+0

通过在您的“ViewCustomer”视图中进行搜索? – 2012-08-14 22:04:18

回答

3

您可以使用来自MVCContrib的强类型操作链接。

<%: Html.ActionLink<Home>(c => c.Index()) %> 

如果您使用的是已编译的视图,那么当您删除引用的控制器方法时,这些将在编译时中断。

+0

这些“强类型动作链接”是ASP.NET MVC 3框架的一部分吗?我从来没有见过这种内置的功能......你能添加一个指向文档的链接吗? – nemesv 2012-08-15 00:47:23

+1

就是这样,我几乎准备好将整个项目重做为强类型链接(因为它适用于所有场景,不仅是'ActionLink'),而是首先尝试 - 它不是内置的,您必须安装'MvcFutures'。这个网站上的人们说这个软件包有问题 - 错误和性能。我个人没有检查它,但'T4MVC'已经过很好的测试,并且已经工作了多年。我现在坚持我的答案和'T4MVC'。 – 2012-08-15 01:59:37

+0

他们是MVC3的一部分,但是未来的一部分。他们是T4MVC的一部分,现在是MvcContrib的一部分 - 请参阅http://mvccontrib.codeplex.com/wikipage?title=RedirectToAction&referringTitle=文档文档 – 2012-08-15 10:44:57

2

如果您正在寻找系统的方法安装(可以使用NuGet)并应用T4MVC

我把它做到了我自己的项目中 - 所有你的魔术字符串(不仅是动作链接,而是需要字符串的所有东西)在你的应用程序中消失。您最终只能使用强类型帮助程序来消除使用文字字符串。

特别是在

@Html.ActionLink("View", "ViewCustomer", "Customer") 

您的案件将成为

@Html.ActionLink("Externalize me as well!", MVC.Customer.ViewCustomer()) 

,如果您外部化的一个建议,这将成为你在寻找什么:

@Html.ActionLink(Config.ViewLabel, MVC.Customer.ViewCustomer()) 

难道不是这不是美丽吗? 我认为这应该是事实上的标准,而不是“串联”的方法。

查找到什么,它对你的项目: 在浏览次数:

@Html.RenderPartial(MVC.Customer.Views.YourView) 

在控制器:

return View(Views.YourView); 

RedirectToAction(MVC.Home.MyAction().AddRouteValues(Request.QueryString)); 

希望这有助于。

+0

它似乎有点旧(它是为MVC 1.0和2.0设计的)。虽然我(类似于)语法,但我认为强类型的动作链接现在是执行它的规范方式,并且您可以使用这些链接而无需键入完全限定的名称。 – 2012-08-15 00:17:19

+0

@RobertHarvey是否可以在所有级别上工作(我至少已列出)或仅在操作链接上工作?因为我也喜欢,它的T4MVC似乎更系统化......好奇。谢谢! – 2012-08-15 00:26:36

+0

@RobertHarvey阅读强烈类型的动作链接 - 它的社区非常讨厌,主要用于性能问题,但虽然魔术字符串明显快得多,但T4MVC是这两者之间的权衡。我会说T4MVC是要走的路 - 强有力的类型和系统。感谢您指出! http://stackoverflow.com/questions/11620832/considerations-for-strongly-typed-actionlink – 2012-08-15 01:04:27