[英]Error message on post in asp.net mvc 3
我在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);
}
這是參數傳遞的方式:
@Html.ActionLink("Edit", "Edit", new { id=item.CertificateNo })
下面是我的觀點的一部分,該觀點調用了以上兩種方法:
@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>
這是我的路線:
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
);
}
這是我的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));
現在,當我單擊保存時,出現此錯誤:
參數字典包含方法'System.Web.Mvc.ActionResult詳細信息(System.String,System.String,System.String,System.Nullable`)的非空類型'System.Int32'的參數'id'的空條目。 1 [onlineCPD.Controllers.HomeController]中的[System.Int32],Int32)。 可選參數必須是引用類型,可為空的類型,或者必須聲明為可選參數。 參數名稱:參數
我想在我的帖子中傳遞一個參數,但是我該怎么做,有人可以解釋,因為我對此沒有經驗。
您應該像這樣修復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);
}
在您的actionlink中執行以下操作:
@Html.ActionLink("Edit", "Edit", new { id=item.QuizNo })
或者嘗試更改明細簽名以獲取ID的可接受的可為空值,如下所示:
Details(string sortOrder, string currentFilter, string searchString, int? page, int? id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.