我在创建的应用程序中调用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
,页面将呈现而没有错误,但没有数据存在。
答案 0 :(得分:1)
最有可能的是,将数据发送到操作方法Edit
,即在您的操作链接中出现问题。只需打开一些像Firebug或Chrome Dev工具那样的开发工具来检查发送到服务器的内容。
当您的网址看起来像
时Edit?OrderNumber=1234
然后你需要在你的Action方法上有一个匹配的参数,比如
public ViewResult Edit(int orderNumber) {...}
相反
Edit(int orderNum){...}
不起作用。基本上url参数名称和操作方法参数名称必须匹配(不区分大小写,但名称必须匹配)