我在我的asp.net MVC應用程序中這兩種操作方法:錯誤消息3
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);
}
這是paremeters如何傳遞:
@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
);
}
這是我的詳細方法的部分代碼。
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));
現在,當我點擊保存,我得到這個錯誤:
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'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters
我想傳遞一個參數在我的職位,但我怎麼做到這一點,可以有人爲我只是沒有經驗解釋這裏。
你可以在你的視圖中顯示設置表單的代碼(這是由第e保存按鈕)? –
你能把它放在主帖中嗎,所以我可以真正閱讀它? –
好的,你只需要使用默認路由即可。 – MVCKarl