添加“编辑”Ajax.ActionResult以在MVC中的同一页面上呈现

时间:2014-11-21 13:13:35

标签: ajax asp.net-mvc

我的第一个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">

有人可以建议为什么这会失败,而 应该做什么而不是将这个局部视图渲染到页面上(因为它目前正在重定向到新的页面并没有显示在'索引'屏幕上)?

1 个答案:

答案 0 :(得分:0)

将这些脚本放在视图的底部。当他们执行你的表格时不存在(因此自动连线失败)。通常,在脚本执行之前,您希望<script>标记尽可能靠近</body>标记。

除此之外,你看起来很好。