空参数错误

时间:2012-10-05 20:53:53

标签: c# asp.net-mvc-3

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

  

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

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

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

如果将参数更改为int? orderNum,页面将呈现而没有错误,但没有数据存在。

1 个答案:

答案 0 :(得分:1)

最有可能的是,将数据发送到操作方法Edit,即在您的操作链接中出现问题。只需打开一些像Firebug或Chrome Dev工具那样的开发工具来检查发送到服务器的内容。

当您的网址看起来像

Edit?OrderNumber=1234

然后你需要在你的Action方法上有一个匹配的参数,比如

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

相反

Edit(int orderNum){...}

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