加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC可选参数默认值

发布时间:2020-12-16 03:23:33 所属栏目:asp.Net 来源:网络整理
导读:我有以下MVC动作: [ActionName("order-brochure")]public ActionResult OrderBrochure(int brochureId,bool isModal = true){ return View(HomeModelBuilder.BuildOrderBrochureModel(brochureId,isModal,false));} 其中isModal是可选参数 除了在我的公司使
我有以下MVC动作:

[ActionName("order-brochure")]
public ActionResult OrderBrochure(int brochureId,bool isModal = true)
{
    return View(HomeModelBuilder.BuildOrderBrochureModel(brochureId,isModal,false));
}

其中isModal是可选参数

除了在我的公司使用代码分析时使用bool isModal = true之外,还有其他任何方法来设置此默认设置,并且这无法给出CA1026:不应使用默认参数

但是,我无法覆盖该方法,因为您不能有两个具有相同名称的操作,因为您将在以下行中收到错误:

The current request for action 'order-brochure' on controller type 'HomeController' is ambiguous between the following action methods: 
System.Web.Mvc.ActionResult OrderBrochureModal(Int32,Boolean) on type MarshallsCoUkCommercial.Website.Controllers.HomeController
System.Web.Mvc.ActionResult OrderBrochure(Int32) on type MarshallsCoUkCommercial.Website.Controllers.HomeController

如果我使用

public ActionResult OrderBrochure(int brochureId,bool isModal)

将isModal设置为UrlParameter.Optional

我无法测试isModal是否为null,因为它总是设置为false

解决方法

显然这条规则已经过时,不应该应用于C#4.0及更高版本.有关类似问题,请参阅 this discussion.

我想说只是禁用这条规则,因为它在MVC4中毫无意义.

但是,抑制规则可能不符合您的公司规则,那么您必须解决这个问题. (这些规则很愚蠢,当你不得不乱砍那些过时的废话时!)

其中一个选项是为每种情况设置一个自定义规则:指定可选参数的默认值. (对不起,找不到快速的实现)

或者,正如已经建议的那样使用可以为空的布尔值

public ActionResult OrderBrochure(int brochureId,bool? isModal)

然后在你的方法中检查isModel上的null.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读