#asp.net-mvc #jquery-ui
#asp.net-mvc #jquery-пользовательский интерфейс
Вопрос:
У меня есть диалоговое окно в jQuery с двумя кнопками. При нажатии кнопки «Загрузить в любом случае» я вызываю действие моего контроллера. $(function () { $(«#dialog:ui-dialog»).dialog(«уничтожить»);
$("#dialog-confirm").dialog({
resizable: false,
height: 300,
width: 500,
modal: true,
buttons: {
"Upload Anyway": function () {
$(this).dialog("close");
var month = '@ViewBag.duplicateString' ;
var path = $("#path").val();
$.getJSON('@Url.Action("UpdateComp")', { dateToUpdate: month, filePath: path },
function() {});
},
Cancel: function () {
$(this).dialog("close");
}
}
});
В контроллере я просто хочу обработать данные и вернуть представление.
public ActionResult UpdateComp (string dateToUpdate, string filePath)
{
//Process Data
return View(compList.Values.AsEnumerable<CompUser>());
}
Когда я нажимаю на кнопку «Загрузить в любом случае», я правильно перенаправляюсь на действие (я проверил с помощью debug), но представление не загружается. Я не очень хорош в jQuery, поэтому, возможно, я делаю что-то не так.
Спасибо за вашу помощь!
Ответ №1:
Ваш обратный вызов для $.getJSON ничего не делает. См. http://api.jquery.com/jQuery.getJSON / и посмотрите на параметр «успех».
Но, если вы возвращаете представление (HTML и т. Д.), Тогда вы не «получаете JSON», Вы получаете HTML. Попробуйте вместо этого использовать $.get или $.post (в зависимости от требований) и отобразить возвращенное представление пользователю при успешном обратном вызове.
Комментарии:
1. Если я вас хорошо понимаю, я должен вызвать свое представление в функции успеха jQuery. Если это так, я понятия не имею, как это сделать, и, прежде всего, как предоставить модель представлению в Jquery???
2. Я пробовал с $.get и $.post, но тоже ничего не добавлял. Я действительно не понимаю, почему он не перенаправляет меня на мой взгляд…
Ответ №2:
Изменение $.getJSON на $.get и отображение результирующего представления в моем основном разделе решают проблему.
Обратите внимание, что я отображаю частичное представление, чтобы правильно отобразить div.
Вот код jQuery, надеюсь, это поможет кому-то другому.
$(function () {
$("#dialog:ui-dialog").dialog("destroy");
$("#dialog-confirm").dialog({
resizable: false,
height: 300,
width: 500,
modal: true,
buttons: {
"Upload Anyway": function () {
$(this).dialog("close");
var month = '@ViewBag.duplicateString' ;
var path = $("#path").val();
$.get('@Url.Action("UpdateComp")', { dateToUpdate: month, filePath: path }, function(result) {
$('#main_div').html(result);
})
.error(function() { alert("A Problem occurs during the comparison"); });
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
Комментарии:
1. Извините, что не ответил на ваши комментарии. Вы реализовали мой ответ и отметили свой ответ как ответ…
Ответ №3:
Попробуйте это
var url = '@Url.Action("method_name", "controller_name")?dateToUpdate=' month 'amp;filePath=' path;
window.location.href = url;