Мне трудно работать с помощником MVC Ajax и пытаться обновить определенную часть страницы.В моем коде у меня такая ситуация:
<div id="ajaxLoadedContent">
<table>
<tr>
<th>
<%: Html.Label("ProductId") %>
</th>
<th>
<%: Html.Label("ProductName") %>
</th>
<th>
</th>
</tr>
<% foreach (var product in Model.Products)
{
%>
<tr>
<td>
<%: direccion.ProductId %>
</td>
<td>
<%: direccion.ProductName %>
</td>
<td>
<% using (Ajax.BeginForm("EditProduct", "MyController",
new { ContainerDiv = "ShowEditProducts" },
new AjaxOptions() { UpdateTargetId = "ShowEditProducts", OnSuccess = "updatePlaceholder" }))
{%>
<%: Html.Hidden("ProductId", product.ProductId)%>
<input type="submit" value="Edit" />
<%} %>
</td>
</tr>
<% } %>
</table>
<script type="text/javascript">
function updatePlaceholder(context) {
var html = context.get_data();
var placeholder = context.get_updateTarget();
$(placeholder).html(html);
return false;
}
</script>
<div id="ShowEditProducts"></div>
</div>
Теперь, когда я нажимаю кнопку «Редактировать», появляется «Представление редактора», но проблема в том, что когда я отправляю эту форму,Есть два варианта:
- Данные в порядке, изменения сделаны, форма исчезает, а список обновляется.
- Данные не в порядке, формы остаются и проверкапоявляются сообщения.
Проблема в том, что UpdateTargetId различаются для каждой опции.Вариант 1 обновляет «ShowEditProducts», а вариант 2 обновляет «ajaxLoadedContent».Кроме того, 'Edit View' содержит JavaScript, который выполняется, когда представление загружается с помощью кнопки "Edit", но не выполняется, когда форма содержит ошибки и повторно визуализируется.
Код внешнего вида EditViewнапример:
<% using (Ajax.BeginForm("SubmitEdit", new AjaxOptions() { UpdateTargetId = Model.ContainerDiv}))
{%>
<script type="text/javascript">
// My JavaScript
</script>
<table>
<tr>
<td>
<%: Html.Label("Id")%></br>
<%: Html.TextBoxFor(x => x.Product.ProductId)%></br>
</td>
<td>
<%: Html.Label("Name")%></br>
<%: Html.TextBoxFor(x => x.Product.ProductName)%><
</td>
</tr>
</table>
<input type="submit" value="Save" />
<%: Ajax.ActionLink("Cancel", "EmptyView","Shared", new AjaxOptions() { UpdateTargetId = Model.ContainerDiv})%>
<% } %>
Итак, теперь у меня есть две большие проблемы: 1. JavaScript «Edit View» не выполняется при повторном рендеринге представления.2. Как я могу обновить одну цель, если есть ошибки, а другая - нет?
Спасибо