假设我有一个将在不同页面上显示的统计视图。 没有任何助手,我必须使用以下代码:
@section Statistic{
@Html.RenderAction("Index", "Statistic", new { id = Model.UserId });
}
但是通过创建帮助器,我可以编写类似的内容:
@section Statistic{
@Html.Stats().For(Model.UserId);
}
然后,控制器,ActionName或统计控制器参数的任何未来更改都需要在我的StatsHtmlHelper中的1个位置进行更改
我的一些同事抱怨说这个助手除了调用RenderAction之外什么都不做,然后就不应该存在了。你有什么看法?
答案 0 :(得分:3)
通过创建辅助方法,可以降低调用RenderAction,ActionLink和此类方法的复杂性,并消除“魔术字符串”。但是对于每个不同的动作,你必须用你的方法(!)创建另一个帮助器,这可能会产生其他复杂性,特别是当已经存在社区工具以使生活更简单的情况下。如果您为统计数据执行此操作,为什么不对应用程序中的每个其他操作执行此操作?我会使用T4MVC及其RenderAction, ActionLink
重载来接受ActionResult
。有了它,当控制器,动作或参数签名发生变化时,您可以摆脱魔术字符串并获得编译时异常。对于编译器标记错误的确切位置,修复它们更容易。使用T4MVC,您的统计渲染行将是:
@{Html.RenderAction(MVC.Index.Statistic(Model.UserId));}
T4MVC方法适用于一般方法。您可以简单地将它们用于整个项目中的每个操作