视图助手调用中不同lambda表达式语法的优缺点

时间:2009-08-19 17:37:18

标签: c# asp.net-mvc

我正在根据有关此博客帖子的部分请求的想法撰写视图助手:http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

在控制器操作中,我通过运行以下来准备小部件:

AddWidget<Someontroller>(x => x.OtherActionName(new List<int>()));

然后在我看来,我可以通过执行以下某种形式来运行动作并渲染视图输出:

Html.RenderWidget...

这就是我的问题,您可以从以下选项中选择哪种编译器检查语法在视图中使用:

Html.RenderWidget<SomeController, List<int>>(x => x.OtherActionName);

Html.RenderWidget<SomeController>(x => x.OtherActionName(null));

Html.RenderWidget<SomeController>(x => x.OtherActionName(It.IsAny<List<int>>);

有人能说出一些利弊吗?或者最好使用原始部分请求实现的字符串?

PS。不要把它命名为It.IsAny&gt;我觉得最好使用Moq命名来描述。

1 个答案:

答案 0 :(得分:1)

使用字符串比使用所谓的强类型助手快得多(真的;它快10倍),除非你为Expression解析实现某种缓存。但请注意,MVC 2可能具有RSN这些行。因此,如果可以的话,一个选择是等待,看看下一个预览中的内容是什么。至少,你会希望看起来像MVC的其余部分,MVC团队最终可能会为你工作。

(“所谓的”,因为无论如何,它们最终将成为RouteValueDictionary中的字符串。)