РЕДАКТИРОВАТЬ: Ну, извините за мое неправильное понимание.Если вы можете использовать повторно, если вы в конечном итоге переключитесь на обновление на основе AJAX или просто захотите получить чистый / простой основной вид, тогда переходите к частичным.
В MVC 3 есть еще один способ - использовать EditorTemplates / DisplayTemplates.Они действительно мощные, но требуют полного изучения, чтобы использовать их полностью.Оба подхода имеют свои плюсы и минусы, это действительно зависит от того, что вы конкретно делаете.
До тех пор, пока я нашел два способа отображения частичных представлений в диалогах jqUI.
Первый загружаетсяпредставление через AJAX или @Html.RenderAction
В последнем случае, когда сценарий довольно статичен, используется @Html.RenderPartial
непосредственно внутри div, используемого для построения диалога.
Вот метод Ajax, который я использую:
function MyDlg(options,bottoni) {
var name = options.name;
$(name).load(options.url, function () {
var $jQval = $.validator;
$jQval.unobtrusive.parse($(this));
$(name).dialog({
autoOpen: true,
width: options.width,
heigth: options.height,
resizable: false,
draggable: true,
title: options.title,
modal: true,
buttons: bottoni
});
$(name).dialog("open");
});
}
Как видите, он получает что-то вроде:
var bottoni = {
"Cancel": function () {
// cancel pressed
},
"Ok": function () {
// Ok pressed
}
}
MyDlg({ name: "Edit", width: "auto", height: "auto", title: 'Edit Stuff', url: mvcUrl }, bottoni);
Важными частями являются:
Ненавязчивая активация:
var $jQval = $.validator;
$jQval.unobtrusive.parse($(this));
Итот факт, что диалог открывается в событии load
.
В контроллере вы просто возвращаете PartialView("_viewName", model)
.
Остерегайтесь при использовании диалога, чтобы очистить их.Я предпочитаю программно создать div с помощью document.createElement (), а затем удалить его из DOM при закрытии, но есть сценарии, в которых я должен оставить div в dom.