我在MVC ASP.NET项目中遇到问题。 我使用LINQ技术。当我想向表中插入一条记录时,会显示此错误。尽管执行了插入操作:**
ERROR:
>'/'应用程序中的服务器错误。该 parameters字典包含null 参数'id'的条目 非可空类型'System.Int32' 方法'System.Web.Mvc.ActionResult 索引(Int32)' 'MVCJahan_oil.Controllers.getehController'。 可选参数必须是a 引用类型,可空类型或者是 声明为可选参数。 参数名称:参数 描述:未处理的异常 在执行期间发生 当前的网络请求。请查看 堆栈跟踪以获取更多信息 错误及其来源 代码。
insert(create)的控制器方法:
public ActionResult Index(int id)
{
var query= from gete in l_class.getehs where gete.request_no == id select gete;
this.Session["req_no"] = id;
return View(query.ToList());
}
[HttpPost]
public ActionResult Create([Bind(Exclude = "id")]geteh gte)
{
try
{
l_class.getehs.InsertOnSubmit(gte);
l_class.SubmitChanges();
return RedirectToAction("Index", new { id = System.Convert.ToInt32 (Session["req_no"].ToString()) });
}
catch
{
return View();
}
}
答案 0 :(得分:2)
您的控制器期待名为int
的{{1}},而不是一个。如果整数可以为空,那么您应该使用id
参数。
而不是
int?
你应该使用
public ActionResult Index(int id) {
}
代替。
如果id应该在那里并且您使用的是PRG模式,请确保在使用public ActionResult Index(int? id) {
}
提交表单后重定向时包含id(仅将1替换为实际值)。
答案 1 :(得分:1)
试试这个:
RedirectToAction(new {controller="Home", action="Index", id=123});
自行更换控制器,操作和ID。 如果错误仍然存在,请检查会话的值。
答案 2 :(得分:0)
问题可能在执行插入后调用的控制器方法中。该方法需要int id
参数,但路由到该方法的重定向不会传递id值。