【发布时间】:2015-05-12 12:43:11
【问题描述】:
我是新来学习 MVC 的。我遇到了这个错误,我找不到解决方案。
我的控制器看起来像这样:
public class EmployeeDataController : Controller
{
public ActionResult Details(int idd)
{
EmployeeDataContext edc = new EmployeeDataContext();
EmployeeData employee= edc.employeedata.Single(emp => emp.id == idd);
return View(employee);
}
}
从浏览器(即http://localhost:4166/EmployeeData/details/1)执行详细信息方法时,我收到此错误:
参数字典包含“MvcDemo1.Controllers.EmployeeDataController”中方法“System.Web.Mvc.ActionResult Details(Int32)”的不可为空类型“System.Int32”的参数“idd”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
任何帮助都可以很好地解决我的问题。
当我更新我的代码并尝试编译程序时,编译时没有错误,但是当我运行程序时,我得到了一个错误
EmployeeData employee= edc.employeedata.Single(x=>x.id==id);
**在 EntityFramework.SqlServer.dll 中发生“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常,但未在用户代码中处理
附加信息:执行命令定义时发生错误**
【问题讨论】:
-
在
Details方法中尝试用id替换idd -
你在哪里调用你的
Details方法?这就是要显示的代码 -
你需要展示你是如何调用
Details()方法的。您是否向其传递了一个名为idd且具有有效值的参数? -
它告诉您,当您调用
Details操作时,您需要为idd提供一个值。你提供一个值吗?您如何调用该操作? URL 和/或表单帖子是什么样的? -
@wasimali,默认路由有一个名为
id的参数(请参阅您的RouteConfig.cs文件)。把Details()方法的参数改成id(不是idd)就可以了,不然就用/EmployeeData/details?idd=1调用方法
标签: c# asp.net-mvc asp.net-mvc-4