Ошибка не может найти вид в виде Ajax
Я задаю подобный вопрос здесь
Поэтому я добавляю некоторые OnComplete
Функции и Id для Ajax Forms, и есть:
Это мой взгляд:
@foreach(var item in Model) {
<tr id="TR@(item.Id)">
@{Html.RenderPartial("_PhoneRow", item);}
</tr>
}
_PhoneRow
:
@model PhoneModel
@using(Ajax.BeginForm("EditPhone", new { id = Model.Id }, new AjaxOptions {
UpdateTargetId = "TR" + Model.Id,
OnComplete = "OnCompleteEditPhone"
}, new { id = "EditAjaxForm" + Model.Id})) {
<td>@Html.DisplayFor(modelItem => Model.PhoneNumber)</td>
<td>@Html.DisplayFor(modelItem => Model.PhoneKind)</td>
<td><input type="submit" value="Edit" class="CallEditPhone" id="edit@(Model.Id)" /></td>
}
контроллер:
public ActionResult EditPhone(long Id) {
//Get model by id
return PartialView("_EditPhoneRow", model);
}
public ActionResult SavePhone(PhoneModel model) {
//Save Phone, and Get Updatet model
return PartialView("_PhoneRow", model);
}
_EditPhoneRow
@model PhoneModel
@using(Ajax.BeginForm("SavePhone", new { id = Model.Id }, new AjaxOptions {
UpdateTargetId = "TR" + Model.Id,
OnComplete = "OnCompleteSavePhone"
})) {
<td>@Html.EditorFor(modelItem => Model.PhoneNumber)</td>
<td>@Html.EditorFor(modelItem => Model.PhoneKind)</td>
<td><input type="submit" value="Save" class="SaveEditPhone" id="save@(Model.Id)" /></td>
}
А также Oncomplete
Сценарии:
function OnCompleteEditPhone() {
$('input.SaveEditPhone').click(function () {
var id = $(this).attr("id").substring(4);
$('form#SaveAjaxForm' + id).trigger('submit');
});
}
function OnCompleteSavePhone() {
$('input.CallEditPhone').click(function () {
var id = $(this).attr("id").substring(4);
$('form#EditAjaxForm' + id).trigger('submit');
});
}
Итак, нажмите "Правка" отлично сработало, затем нажмите "Сохранить" и "Работало хорошо", но во второй раз, когда я нажимаю кнопку "Правка", у меня появляется ошибка в действии "Post".
http://Mysite/members/editphone/7652 200 OK 582ms
http://Mysite/members/savephone/7652 200 OK 73ms
http://Mysite/members/editphone/7652 500 internal server error 136ms
<title>The view 'EditPhone' or its master was not found or no view engine supports the searched locations. The following locations were searched: ...
Так в чем же проблема? Если я удалю OnCompleteSavePhone
Кнопка Изменить во второй раз не сработала, и с этой функцией у меня ошибка, которая не имеет никакого смысла, Как я могу это исправить? Я на самом деле загружаю частичные представления Ajax, и нужно, чтобы кнопки этих представлений работали корректно, поначалу все хорошо, но после результата Ajax - нет, думаю, я добавлю несколько Oncomplete
функции, но есть ошибка также.
1 ответ
На ваш предыдущий вопрос сейчас дан ответ. Вы сломали разметку. Как следствие этого вам больше не нужно заботиться о каких-либо OnComplete
события и делать некоторые автоматические триггеры, формы представления и прочее. Это будет обработано Ajax.BeginForm
инфраструктура автоматически для вас.