我有一个MVC 5应用程序。我会跟进本教程Getting Started with ASP.NET MVC 5
当我单击详细信息,编辑或删除时,我得到HTTP错误400.0 - 错误请求。
我的索引视图
alert()
我的详情视图
@foreach (var item in Model)
{
<div class="city">
<h2>@Html.DisplayFor(modelItem => item.announce_PublishDate)</h2>
<p>@Truncate(item.announce_Description, 90)</p>
<p>@Html.ActionLink("more", "Details", new { id = item.announce_ID }) </p></div>}
控制器
<div>
<h4>prokirikseis</h4>
<hr />
<dl class="dl-horizontal">
<dd>
@Html.DisplayFor(model => model.announce_ID)
</dd>
<dd>
@Html.DisplayFor(model => model.announce_Description)
</dd>
<dd>
@Html.DisplayFor(model => model.announce_PublishDate)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.announce_ID }) |
@Html.ActionLink("Back to List", "Index")</p>
模型
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
announce announce= db.announce.Find(id);
if (announce == null)
{
return HttpNotFound();
}
return View(announce);
}
我做错了什么?我注意到它在网址中带来了正确的ID。 http://localhost:zzzzz/ltest/Details/01_2.2但它没有带来内容。 谢谢
答案 0 :(得分:3)
您的操作方法正在接受int
类型的参数,但类announcements
中的键是string
,而不是int
。 (并且您问题中的url
正在将值01_2.2
传递给Details()
方法,因此id
为null
。)
将您的方法更改为
public ActionResult Details(string id)
虽然我建议您实际将密钥更改为自动递增int