[英]Error message on post in asp.net mvc 3
I have these two action method in my asp.net mvc application: 我在asp.net mvc应用程序中有以下两种操作方法:
public ActionResult Edit(int id)
{
cpd_certificates cpd_certificates = db.Certificate.Find(id);
return View(cpd_certificates);
}
//
// POST: /Home/Edit/5
[HttpPost]
public ActionResult Edit(cpd_certificates cpd_certificates)
{
if (ModelState.IsValid)
{
db.Entry(cpd_certificates).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Details");
}
return View(cpd_certificates);
}
This is how the paremeters are passed: 这是参数传递的方式:
@Html.ActionLink("Edit", "Edit", new { id=item.CertificateNo })
below is part of my view that calls those two methods above: 下面是我的观点的一部分,该观点调用了以上两种方法:
@model IEnumerable<onlineCPD.Models.cpd_certificates>
<table>
<tr>
<th>
QuizNo
</th>
<th>
Received
</th>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.QuizNo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Received)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.CertificateNo })
</td>
}
</table>
This is my route: 这是我的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
This is part code for my details method. 这是我的details方法的部分代码。
public ActionResult Details(string sortOrder, string currentFilter, string searchString, int? page, int id)
{
var certificateDetails = db.Certificate.Where(p => p.ID == id);
return View(certificateDetails.ToPagedList(pageNumber, pageSize));
Now when I click save, I get this error: 现在,当我单击保存时,出现此错误:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Details(System.String, System.String, System.String, System.Nullable`1[System.Int32], Int32)' in 'onlineCPD.Controllers.HomeController'.
参数字典包含方法'System.Web.Mvc.ActionResult详细信息(System.String,System.String,System.String,System.Nullable`)的非空类型'System.Int32'的参数'id'的空条目。 1 [onlineCPD.Controllers.HomeController]中的[System.Int32],Int32)。 An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
可选参数必须是引用类型,可为空的类型,或者必须声明为可选参数。 Parameter name: parameters
参数名称:参数
I am suppose to pass a parameter in my post, but how do I do this and can someone explain as I just inexperienced here. 我想在我的帖子中传递一个参数,但是我该怎么做,有人可以解释,因为我对此没有经验。
You should fix Edit
method like this: 您应该像这样修复
Edit
方法:
[HttpPost]
public ActionResult Edit(cpd_certificates cpd_certificates)
{
if (ModelState.IsValid)
{
db.Entry(cpd_certificates).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Details", new { id = cpd_certificates.id });
}
return View(cpd_certificates);
}
In your actionlink do this: 在您的actionlink中执行以下操作:
@Html.ActionLink("Edit", "Edit", new { id=item.QuizNo })
Or alternatively try to change details signature for acceptable nullable value for id, like this: 或者尝试更改明细签名以获取ID的可接受的可为空值,如下所示:
Details(string sortOrder, string currentFilter, string searchString, int? page, int? id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.