我的第一个Ajax请求失败了,我不确定为什么。
我使用MVC脚手架来创建一个表(使用默认的@Html.Actionlink
)。但是,我希望通过ajax请求在同一页面上添加“编辑”部分。
所以我的桌子现在有:
<td>
@Ajax.ActionLink("Edit", "Edit", new { id=item.OID}, new AjaxOptions {
UpdateTargetId = "editblock",
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET" }
) |
根据建议here。
在同一视图中,我将div定义为:
<div id="editblock">
Edit Section Here
</div>
我的控制器定义为:
public PartialViewResult Edit(int? id)
{
if (id == null)
{
return PartialView(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
}
TableModel tablevar = db.TableModel.Find(id);
if (tablevar == null)
{
return PartialView(HttpNotFound());
}
return PartialView("Edit", tablevar );
}
[HttpPost]
[ValidateAntiForgeryToken]
public PartialViewResult Edit( TableModel tablevar )
{
if (ModelState.IsValid)
{
db.Entry(tablevar ).State = EntityState.Modified;
db.SaveChanges();
}
return PartialView("Edit",tablevar );
}
我的“Edit.cshtml”看起来像:
@model Project.Models.TableModel
<body>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
有人可以建议为什么这会失败,而 应该做什么而不是将这个局部视图渲染到页面上(因为它目前正在重定向到新的页面并没有显示在'索引'屏幕上)?
答案 0 :(得分:0)
将这些脚本放在视图的底部。当他们执行你的表格时不存在(因此自动连线失败)。通常,在脚本执行之前,您希望<script>
标记尽可能靠近</body>
标记。
除此之外,你看起来很好。