Как я могу перезагрузить div с PartialView в ASP.NET MVC, используя jQuery?
-
07-07-2019 - |
Вопрос
У меня есть div с частичным внутри где-то на странице. У меня есть событие на кнопке. Как я мог написать Javascript, который принимает div и перезагружает его, а также перезагружает частичное представление. Р>
У меня есть это в другом представлении. Но я не могу сделать это сейчас. Но мне нужно, чтобы то же самое происходило только при выполнении jQuery, а не непосредственно на странице. Могу ли я запустить, возможно, симуляционный код AJAX в сценарии JQuery, потому что его Javascript тоже не так ли? Р>
<% using (Ajax.BeginForm("EditFeiertag", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "feiertage" }))
{ %>
<div id="feiertage">
<% Html.RenderPartial("FeiertagTable"); %>
</div>
<% } %>
Я бы помог мне, если бы мог запустить вышеописанный скрипт, запустив событие click или что-то в этом роде
Решение
Давайте начнем с некоторых основных действий контроллера:
public class FeiertagController
{
IFeiertagService feiertagService = new FeiertagService();
public ActionResult EditFeiertag()
{
// ... return your main edit view
return View();
}
// Will be called by your jquery ajax call
public PartialResult GetFeiertagTable()
{
var feiertagData = messageService.getLatestFeiertagData();
var viewModel = new FeiertagViewModel();
feiertagViewModel.feirtagTableData = feiertagData;
return PartialView("FeiertagTableView", viewModel);
}
}
Итак, EditFeiertag () используется для визуализации всей страницы редактирования, и эта страница будет вызывать GetFeiertagTable (), когда она хочет асинхронно визуализировать ваше частичное представление.
Теперь, на ваш взгляд, допустим, у вас есть что-то вроде:
<div id="Container">
<div id="LeftPanel">
// ... Some menu items
</div>
<div id="RightPanel">
<a id="ReloadLink" href="#">Reload Table</a>
<div id="FeiertagTable>
<% Html.RenderPartial("FeiertagTable", Model.feiertagTableData); %>
</div>
</div>
</div>
Это работает нормально и загрузит ваш стол один раз. Но вы хотите перезагрузить таблицу Feiertag, если щелкнете по определенному элементу (в нашем случае это #ReloadLink).
Добавьте следующее в
вашей страницы:
<head>
<script src="../../Scripts/Jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#ReloadLink').click(function(e)
{
e.preventDefault(); // stop the links default behavior
$('#FeiertagTable').load('/Feiertag/GetFeiertagTable');
});
});
</script>
</head>
Затем добавится событие для события click для ссылки на перезагрузку, которое вызовет метод jquery load (). Этот метод является упрощенным запросом получения ajax, и он заменит содержимое выбранного div (FeiertagTable) тем, что возвращается. Р>
Действие нашего контроллера GetFeiertagTable () вернет частичное представление, которое затем вставляется в этот div.
Надеюсь, это направит вас в правильном направлении!