0

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

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

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

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

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

4

1 回答 1

1

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

当您的网址看起来像

Edit?OrderNumber=1234

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

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

反而

Edit(int orderNum){...}

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

于 2012-10-05T20:55:54.247 回答