【发布时间】:2015-10-18 10:19:23
【问题描述】:
我的标记有一个div 和id= "divGrid" 和一个启用ajax 的表单在div 之外。表单包含两个文本输入和一个带有UpdateTargetId = "divGrid" 的提交按钮。它确实完美地更新了该网格,但在页面上添加了重复的启用 ajax 的表单。为什么这个?如何解决这个问题?
这是我的观点:
@model List<EF.Models.Data.Books>
@{
ViewBag.Title = "CodeFirst";
Layout = null;
}
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<div id="divGrid">
@foreach (var item in Model)
{
<table>
<tr>
<td>@item.ID</td>
<td>@item.Name</td>
<td>@item.Price</td>
</tr>
</table>
}
</div>
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divGrid", InsertionMode = InsertionMode.Replace }))
{
@Html.TextBox("name");
<br />
@Html.TextBox("price");
<input type="submit" value="Insert" />
}
我的控制器操作:
[HttpPost]
public ViewResult CodeFirst(FormCollection form)
{
book.Name = form["name"];
book.Price = Convert.ToDecimal(form["price"]);
context.Books.Add(book);
context.SaveChanges();
result = context.Books.ToList();
return View(result);
}
有趣的是,我渲染的标记类似于
<div id="divGrid">
<div id="divGrid">
<!-- Data display as expected -->
</div>
<!-- ajax enabled form, that is out side of this in source code -->
</div>
<!-- ajax enabled form, that is out side of this in source code -->
【问题讨论】:
-
你需要返回一个局部视图,而不是一个视图,并且那个局部视图只需要渲染表格数据(不是你最初渲染的那个视图)
-
@StephenMuecke 谢谢,我会试试的 :)
标签: jquery asp.net ajax asp.net-mvc