带可选参数的MVC操作-哪个更好?在您的动作签名中使用以下两种替代方案是否有优缺点:publicActionResultAction(int?x)//在未提供参数时让MVC绑定null{if(x.HasValue){//做某事}}或publicActionResultAction(int?x=null)//C#可选参数(虚拟重载){if(x.HasValue){//dosomething}}我在实践中从未见过第二个动作签名,不能看看它有什么用处。第一个通常涵盖所有场景:在我的示例中,我使用了带有查询字符串参数的GET请求,但显然这同样适用于其他HTTP动词并且x是路由参数。如果可选参数值不是null,您只需要指定它。如果在重载或调用Action中未指定任何内容,MVC3将自动将null设置为参数的值。但是,值得注意的是,如果签名中此参数后面有任何非可选参数,则必须在调用中指定null。因此,最好将所有可选参数放在签名的末尾。最佳Asp.netMVC解决方案-使用操作方法选择器为什么不通过删除不必要的代码分支来简化控制器操作方法并使用这样的代码:publicActionResultIndex(){//在没有id时做一些事情}[RequiresRouteValues("id")]publicActionResultIndex(intid){//dosomethingwhenidispresent}这当然是可行的,只要你为RequiresRouteValuesAttribute动作方法选择器提供非常简单的代码即可。您可以在这篇博文中找到完全相同的代码。我认为这是解决这个问题的最好方法,因为:它通过删除不必要的分支来简化代码使代码更易于维护(由于复杂性较低)尽可能扩展Asp.netMVC框架保持参数类型应该是他们无论如何,不??需要使它们可以为空等。有关此技术的所有细节都在链接的帖子中进行了非常详细的解释。以上就是C#学习教程:带可选参数的MVC操作——哪个更好?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
