C# asp.net mvc 3中发布的错误消息
我在asp.net mvc应用程序中有以下两种操作方法:C# asp.net mvc 3中发布的错误消息,c#,asp.net-mvc-3,entity-framework,C#,Asp.net Mvc 3,Entity Framework,我在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 Acti
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>
这是my 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));
现在,当我单击“保存”时,出现以下错误:
参数字典包含“onlineCPD.Controllers.HomeController”中方法“System.Web.Mvc.ActionResult”详细信息(System.String,System.String,System.String,System.nullable`1[System.Int32],Int32])的非null类型“System.Int32”的参数“id”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。
参数名称:参数
我想在我的帖子中传递一个参数,但我该怎么做?有人能解释一下吗,因为我在这里没有经验。你应该像这样修改
编辑方法:
[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);
}
Details(string sortOrder, string currentFilter, string searchString, int? page, int? id)
在actionlink中,执行以下操作:
@Html.ActionLink("Edit", "Edit", new { id=item.QuizNo })
或者尝试更改id可接受的可为空值的详细签名,如下所示:
[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);
}
Details(string sortOrder, string currentFilter, string searchString, int? page, int? id)
您应该像这样修改编辑方法:
[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);
}
Details(string sortOrder, string currentFilter, string searchString, int? page, int? id)
在actionlink中,执行以下操作:
@Html.ActionLink("Edit", "Edit", new { id=item.QuizNo })
或者尝试更改id可接受的可为空值的详细签名,如下所示:
[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);
}
Details(string sortOrder, string currentFilter, string searchString, int? page, int? id)
您能在视图中显示设置表单的代码吗(通过“保存”按钮完成)?您能把它放在主帖子中吗,这样我就可以真正阅读它了?好的,您只需要使用默认路径就可以了。@MVCKarl编辑说。这与“保存”按钮相同。你能显示你的详细信息
操作的代码吗?你能在视图中显示设置表单的代码吗(通过“保存”按钮完成)?你能把它放在主帖子中吗,这样我就可以真正阅读它了?好的,那么你只需要使用默认路径就可以了。@MVCKarl编辑说。这与“保存”按钮相同。您可以显示详细信息操作的代码吗?我知道,它传递的是主键,而不是此模型列表中的另一个值。对于方法详细信息,我希望它传递列表项之一的QuizNo,而不是传递PK。我正在详细地使用它来查询和显示某个视图。这是一个什么问题?传递QuizNo而不是id,或者尝试在其中添加新参数QuizNo和传递编号,这就是您要寻找的吗?是的,这就是我要将QuizNo传递到细节的目的。不是要传递PK,而是在记录中传递它的一个值。您应该将id
参数设置为可空类型,它将删除任何限制。我已经得到了它。假设传递的是@Html.ActionLink(“编辑”、“编辑”,new{id=item.QuizNo}),而不是@Html.ActionLink(“编辑”、“编辑”,new{id=item.CertificateNo})。我也接受了你的答案。但是,我明白了,它传递的是主键,而不是这个模型列表中的另一个值。对于方法详细信息,我希望它传递列表项之一的QuizNo,而不是传递PK。我正在详细地使用它来查询和显示某个视图。这是一个什么问题?传递QuizNo而不是id,或者尝试在其中添加新参数QuizNo和传递编号,这就是您要寻找的吗?是的,这就是我要将QuizNo传递到细节的目的。不是要传递PK,而是在记录中传递它的一个值。您应该将id
参数设置为可空类型,它将删除任何限制。我已经得到了它。假设传递的是@Html.ActionLink(“编辑”、“编辑”,new{id=item.QuizNo}),而不是@Html.ActionLink(“编辑”、“编辑”,new{id=item.CertificateNo})。我也接受了你的回答。