【发布时间】:2012-11-28 11:55:44
【问题描述】:
我的 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
);
}
这是我的详细信息方法的部分代码。
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 Details(System.String, System.String, System.String, System) 的不可空类型“System.Int32”的参数“id”的空条目'onlineCPD.Controllers.HomeController' 中的 .Nullable`1[System.Int32], Int32)'。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:参数
我想在我的帖子中传递一个参数,但是我该怎么做,有人可以解释一下,因为我只是在这里没有经验。
【问题讨论】:
-
您能否在视图中显示设置表单的代码(由“保存”按钮完成)?
-
你能把它放在主帖里,这样我就可以真正阅读了吗?
-
好的,所以你只是使用默认路由就可以了。
-
@MVCKarl 它的编辑说 localhost:11074/Home/Edit/89376 。这与保存按钮相同。
-
你能显示你的
Details操作的代码吗?
标签: c# asp.net-mvc-3 entity-framework