Правильный способ загрузки частичных представлений ASP.NET MVC с AJAX? - PullRequest
1 голос
/ 06 мая 2009

Привет всем. Хорошо, вот ситуация. Я хотел бы иметь возможность загружать серию похожих частичных представлений на родительскую страницу; почти так же, как это делается в этой статье (имитация панелей AJAX).

В статье все работает нормально, так как асинхронно вызывает соответствующий метод действия на контроллере. Но метод, который он использует, в лучшем случае выглядит как хакерский, и выглядит не очень элегантно. Краткий обзор того, что происходит:

Это будет независимый виджет, который загружается асинхронно.

<% using (Ajax.Form("ReportOne", null,
      new AjaxOptions { UpdateTargetId = "resultOne" },
      new { id="reportFormOne" })) { } %>

<script type="text/javascript">
   $get("reportFormOne").onsubmit();
</script>

Соответствующий вывод будет иметь вид:

<form action="/Home/ReportOne/reportFormOne" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, { insertionMode: 0, updateTargetId: 'resultDiv' }); return false;">

   <!-- Your form elements here... -->

</form>

Как я уже говорил выше, это не кажется действительно изящным способом достижения этой цели, но я пытался найти альтернативу для этого (используя jQuery или другие средства), и не смог при этом.

1 Ответ

2 голосов
/ 06 мая 2009

Решение jQuery: загружает html из действия после загрузки страницы.

<script type='text/javascript'>
$(function() {
    $.load('<%= Url.Action( "ReportOne", "Home", new { id = "reportFormOne" } ) %>', null, function(response,status,xhr) {
        $('#partialView').html(reponse);
    });
});
</script>

...

<div id='partialView'>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...