我的控制器操作需要多个参数,但在POST上只能有一个参数可以为空。它是十进制的类型。根据默认路由的research I've done,它看起来仅限于为期望单个参数的操作设置默认值。
这是我得到的响应消息:
MVC:参数字典包含非可空类型'System.Decimal'的参数'z'的空条目
以下是BarController.cs中的方法签名:
[HttpPost]
public PartialViewResult Bar(int x, string y, decimal z) {*/Etc*/}
这是我尝试但未成功的路线(RouteConfig.cs):
routes.MapRoute(name: "Bar", url: "Foo/Bar/z",
defaults: new {controller = "Foo", action = "Bar", z= 0 });
我的请求正文包含x和z的值,但y 可以可以为空。
答案 0 :(得分:0)
听起来你试图将 null 作为int32传递,这是行不通的。在c#int32中是值类型,而不是引用。你可以使用可空的int32,但是阅读你的问题听起来好像你期待的东西不同于int32。
添加一些代码,您将获得帮助!
答案 1 :(得分:0)
使用像decimal这样的可以为null的参数?还是int?在你的行动中。
答案 2 :(得分:0)
您也可以将“int”或“decimal”参数设为Nullable。
public PartialViewResult Bar(string y, decimal? z, int? x) {*/Etc*/}
请注意,在这种情况下,您必须验证输入,以检查“x”或“y”是否具有值。在Check an integer value is Null in c#中,您可以找到一些验证Nullable整数变量的方法。可以使用相同的方法来检查decimal参数是否为空。