gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:45:36 26 4
gpt4 key购买 nike

我有以下 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 中没有意义。

但是,取消该规则可能不符合您公司的规则,那么您必须解决这个问题。 (当你不得不绕过一些过时的废话时,这些规则是愚蠢的!)

其中一个选项是为每种情况制定一个自定义规则,如下所示:为可选参数指定默认值。 (抱歉,无法快速找到实现)

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

public ActionResult OrderBrochure(int brochureId, bool? isModal)

然后在您的方法中检查 isModel 上是否为 null。

关于asp.net-mvc - MVC 可选参数默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21933591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com