Моя наценка имеет один div
с id= "divGrid"
и включен один Аякса вид вне что div
. Форма содержит два текстовых ввода и одну кнопку отправки с UpdateTargetId = "divGrid"
. Он прекрасно обновляет эту сетку, но добавляет на странице дублируемую форму с поддержкой ajax. Почему это? Как это исправить?Ajax в Asp.Net MVC странное поведение
Вот мой Вид:
@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 спасибо, я попробую это :) – Imad