C# 在控制器操作中有一个默认参数,需要多个
我的控制器操作需要几个参数,但在POST上只有一个参数可以为null。它是十进制的。基于for default routing,它似乎仅限于为需要单个参数的操作设置默认值 这是我收到的响应消息,原因如下: MVC:参数字典包含不可为空的类型“System.Decimal”的参数“z”的空条目 以下是BarController.cs中的方法签名:C# 在控制器操作中有一个默认参数,需要多个,c#,asp.net-mvc,C#,Asp.net Mvc,我的控制器操作需要几个参数,但在POST上只有一个参数可以为null。它是十进制的。基于for default routing,它似乎仅限于为需要单个参数的操作设置默认值 这是我收到的响应消息,原因如下: MVC:参数字典包含不可为空的类型“System.Decimal”的参数“z”的空条目 以下是BarController.cs中的方法签名: [HttpPost] public PartialViewResult Bar(int x, string y, decimal z) {*/Etc*/
[HttpPost]
public PartialViewResult Bar(int x, string y, decimal z) {*/Etc*/}
以下是我尝试但未成功的路线(RouteConfig.cs):
我的请求正文中有x和z的值,但是y可以为空
如何重构,使z可以为空?除了让它成为一个可为空的十进制类型。我已经有了订阅Decimal类型的算法,而不是可为null的变量。听起来像是试图将null作为int32传递,这是行不通的。在c#中,int32是一种值类型,而不是引用。您可以使用可为null的int32,但阅读您的问题时,听起来您期望的与int32有所不同
添加一些代码,您将获得帮助 使用像decimal这样的可空参数?还是int?在您的操作中。您也可以将“int”或“decimal”参数设置为空
public PartialViewResult Bar(string y, decimal? z, int? x) {*/Etc*/}
注意,在这种情况下,您必须按照检查“x”或“y”是否有值的顺序验证输入。在中,您可以找到一些验证可为空的整数变量的方法。同样的方法也可以用于检查decimal参数是否为null。您可以在此处添加代码以使问题更清楚吗请共享控制器方法代码以及调用的位置it@hasan我已经用代码更新了-谢谢。谢谢-我正在处理十进制类型fwiw。已添加更多代码。很抱歉,我粘贴了错误的服务器错误消息。它抱怨的是System.Decimal,而不是Int32-(见更新)解决方案类似。您必须执行相同的操作(使参数可为null),但要使用decimal参数。编辑答案以支持int和decimal可为null的参数。
public PartialViewResult Bar(string y, decimal? z, int? x) {*/Etc*/}