На одной из моих страниц просмотра у меня есть asp.net mvc PartialView.PartialView содержит некоторый JavaScript (и JQuery).В моем главном представлении asp.net я загружаю PartialView, используя ajax, внутри тега div, как указано ниже.То есть, из контроллера я возвращаю PartialView ("_ DonorEdit") и на своей главной странице я использую javascript для замены содержимого тега div на ответ PartialView.
<div class="content" id="content">
@{Html.RenderPartial("_DonorEdit");}
</div>
Все работает нормально, кроме содержащегося в javascriptв частичном представлении (_DonorEdit).Таким образом, вопрос сводится к следующему: как мне встроить javascript в тег div и по-прежнему заставить его работать правильно.
Эта проблема возникает, только когда частичное представление возвращается из вызова ajax.В приведенном выше коде, если я напрямую включаю PartialView (по запросу без ajax), то JavaScript работает правильно.Но если я позже заменю содержимое div с помощью ajax-запроса, JavaScript, включенный в PartialView, не будет работать.Встроенный JavaScript просто не отображается вместе с частичным представлением.Так что, похоже, есть еще одна причина, почему javascript, встроенный в частичное представление, не передается в браузер после успешного выполнения запроса ajax.
Часть моего кода javascript
<script type=...>
//Date Picker. This works. I get Calendar popup as expected
$(document).ready(function () {
$("#Donor_BirthDate").datepicker({
dateFormat: "dd-mm-yy",
changeMonth: true,
changeYear: true,
yearRange: "-75:+0"
});
$("#Donor_DateLastDonated").datepicker({
dateFormat: "dd-mm-yy",
changeMonth: true,
changeYear: true,
yearRange: "-20:+1"
});
});
//Dropdown handler. Does not make it in my final View.
function residenceStateChanged(e) {
var url = '@Url.Action("_GetCities", "DropDown")';
var cmbResidenceCityId = $('#ResidenceCityId').data('tDropDownList');
cmbResidenceCityId.loader.showBusy();
$.ajax({
type: 'GET',
url: url,
data: { StateId: e.value, AddSelectOption: true, SelectOption: 'Select' },
traditional: true,
success: function (resp, textStatus, jqXHR) {
cmbResidenceCityId.dataBind(resp);
cmbResidenceCityId.select(0);
cmbResidenceCityId.trigger.change();
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
},
complete: function () {
cmbResidenceCityId.loader.hideBusy();
}
});
}
....//Some other code omitted. Does not make it in final view.
</script>