2

如何找到损坏的 Html.ActionLinks?

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

4

3 回答 3

3

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

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

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

于 2012-08-14T22:09:38.170 回答
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));

希望这可以帮助。

于 2012-08-15T00:08:23.327 回答
0

接受的解决方案没有回答这个问题。这是我的解决方案(不确定是否需要 Resharper)。

  1. 单击任何损坏的操作(如果必须,请创建一个)
  2. 悬停红色灯泡
  3. 悬停检查 MVC
  4. 悬停在 > 中查找类似问题
  5. 单击自定义范围
  6. 限制您的范围(它可能会告诉您 10000 个质量问题)
  7. 在结果中搜索“解决操作”
于 2022-01-27T01:57:45.267 回答