Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 空参数错误_C#_Asp.net Mvc 3 - Fatal编程技术网

C# 空参数错误

C# 空参数错误,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我在正在创建的应用程序中调用Edit方法时遇到问题。在视图中,单击一个ActionLink,该链接应将订单号作为参数传递给Edit方法,并打开一个编辑页面,其中包含字段中填充的订单信息。但是,单击链接后,我收到错误: 参数字典包含“AddressUpdater.WebUI.Controllers.OrderController”中方法“System.Web.Mvc.ViewResult Edit(Int32)”的非null类型“System.Int32”的参数“orderNum”的null条目。

我在正在创建的应用程序中调用Edit方法时遇到问题。在视图中,单击一个ActionLink,该链接应将订单号作为参数传递给Edit方法,并打开一个编辑页面,其中包含字段中填充的订单信息。但是,单击链接后,我收到错误:

参数字典包含“AddressUpdater.WebUI.Controllers.OrderController”中方法“System.Web.Mvc.ViewResult Edit(Int32)”的非null类型“System.Int32”的参数“orderNum”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参数名称:参数

但是,该参数存在于URL中。以下是相关的方法:

public ViewResult Edit(int orderNum)
{
    Order order = repository.Orders.First(o => o.OrderNumber == orderNum);
    return View(order);
}

如果将参数更改为
int?orderNum
页面将呈现无错误,但没有任何数据。

将数据发送到操作方法
Edit
,即在操作链接中,很可能有问题。只需打开一些开发工具,如Firebug或Chrome开发工具,检查发送到服务器的内容

当您的url看起来像

Edit?OrderNumber=1234
然后你需要在你的动作方法上有一个匹配的参数,比如

public ViewResult Edit(int orderNumber) {...}
反而

Edit(int orderNum){...}

不行。基本上url参数名称和操作方法参数名称必须匹配(不区分大小写,但名称必须匹配)

您如何调用url,更重要的是,您如何映射路由?ActionLink发布在下面。这里是路由(它是默认的):
routes.MapRoute(“默认”,“路由名称”{controller}/{action}/{id}“,//URL,参数为new{controller=“Order”,action=“List”,id=UrlParameter.Optional})
根据Firebug中的“Net”选项卡(我不确定我是否应该使用它),它正在发送一个
GET Edit?OrderNumber=10000002
。在VS10中使用调试器时,orderNum显示为null。这是视图中应该将订单号传递给方法
@Html.ActionLink(order.OrderNumber.ToString(),“Edit”,new{order.OrderNumber})的链接。
@ian请参阅我的更新帖子:您需要重命名操作方法
OrderNumber
的参数,而不是
orderNum
。我觉得自己很傻,哈哈。谢谢你的帮助,给我上了一堂关于命名参数的宝贵课。