Я немного запутался в том, как открыть частичное представление в окне диалога пользовательского интерфейса jquery. Я делал это с помощью простого диалога, но по разным причинам я решил пойти в другом направлении. Все учебные пособия в Интернете только открывают <div></div>
, и это нормально, но мне нужно открыть весь файл ascx ... Кстати, я планирую иметь валидацию jquery и датчики выбора jquery внутри этого частичного представления.
Какие-нибудь примеры или учебники, которые вы, ребята, знаете?
Спасибо,
Я могу предоставить часть моего примера кода, если вам это нужно.
ОБНОВЛЕНИЕ: более подробная информация плюс код
Это действительно было бы частичным представлением MVC. Некоторый код того, что я пробовал ранее, следует за этим предложением ...
$(document).ready(function () {
var $dialog = $('<div></div>')
.load('<%:Html.ActionLink("edit", "EditTemplate", "PatientACO", new { Template = int.Parse(patId), popID = populationId}, new {@class = "tempDlg", title = "Edit Patient Info"})%>')
.dialog({
autoOpen: false,
title: 'Edit Patient ACO information'
});
});
Это мой код jQuery ...
%><%:Html.ActionLink("edit", "EditTemplate", "PatientACO", new { Template = int.Parse(patId), popID = populationId}, new {@class = "tempDlg", title = "Edit Patient Info"})%><%
То есть EditTemplate - это имя представления (которое загружает частичное представление, если это запрос javascript, а регулярное представление, если нет)
Больше кода, чтобы помочь другим увидеть, что происходит
<script type="text/javascript">
$(function () {
$('a.tempDlg').live("click", function(event) {loadDialog(this, event, '#edit-set');});
$('a.AddPatDlg').live("click", function(event) {loadDialog(this, event, '#addPat');});
$('a.AcoData').live("click", function(event) {loadDialog(this, event, '#addEncounter');});
}); /* end document.ready() */
function loadDialog(tag, event, target) {
event.preventDefault();
var $loading = $('<img src="<%=ResolveClientUrl("~/images/ajaxLoading.gif")%>" alt="loading" class="ui-loading-icon">');
var $url = $(tag).attr('href');
var $title = $(tag).attr('title');
var $dialog = $('<div></div>');
$dialog.empty();
$dialog
.append($loading)
.load($url)
.dialog({
autoOpen: false
, title: $title
, width: 950
, modal: true
, minHeight: 200
, show: 'fade'
, hide: 'fade'
});
$dialog.dialog("option", "buttons", { "Cancel": function () {
$(this).dialog("close"); $(this).empty();
},
"Submit": function () {
var dlg = $(this);
$.ajax({
url: $url,
type: 'POST',
data: $("#target").serialize(),
success: function (response) {
$(target).html(response);
dlg.dialog('close');
dlg.empty();
$("#ajaxResult").hide().html('Record saved').fadeIn(300, function () {
var e = this;
setTimeout(function () { $(e).fadeOut(400); }, 2500);
});
},
error: function (xhr) {
if (xhr.status == 400)
dlg.html(xhr.responseText, xhr.status); /* display validation errors in edit dialog */
else
displayError(xhr.responseText, xhr.status); /* display other errors in separate dialog */
}
});
}
});
$dialog.dialog('open');
};
function displayError(message, status)
{
var $dialog = $(message);
$dialog
.dialog({
modal: true,
title: status + ' Error',
buttons: {
Ok: function() {
$(this).dialog( "close" );
}
}
});
return false;
};
// jQuery Ajax-Post only works in repeatable manner when link that opens SimpleDialog can be placed
// outside the PartialView. Otherwise, calls to SimpleDialog fail on second and subsequent clicks.
// Need to use full postback in this case.
$("#btnSubmit").live('click', function (event) {
event.preventDefault();
var $target = $(this).attr("name");
var $url = $("#target").attr("action");
$.ajax({
url: $url,
type: 'POST',
data: $("#target").serialize(),
success: function (response) {
$.simpleDialog.close();
$($target).html(response);
$("#ajaxResult").hide().html('Record saved.').fadeIn(300, function () {
var e = this;
setTimeout(function () { $(e).fadeOut(400); }, 2000);
});
},
error: function (xhr, status) {
$("#ajaxResult").html(xhr.responseText).show();
$.simpleDialog.close();
}
});
});
jQuery(document).ready(function () {
tableToGrid("#table1", { shrinkToFit: false, width: 1000 });
});