@rgamretsky
SharePoint Develorep(а хочется в ASP.NET MVC dev)

Как динамически заменять PartialView на одной странице?

Ситуация следующая: есть два PartialView, на одном из которых(PartialView1) форма, после отправки которой на месте первого должен отобразиться второй PartialView2. Подскажите, как это реализовать.
  • Вопрос задан
  • 2917 просмотров
Решения вопроса 1
@Quilin
Full-stack разработчик
Можно воспользоваться библиотекой jquery.unobtrusive.ajax, которая идет в коробке с MVC 3+ и с хелпером AjaxHelper. Я бы не советовал это решение для крупных веб-приложений, поскольку он требует от вас горизонтальной структуры зависимостей, что не всегда бывает удобно (и точно неудобно для модульности), но для небольших страниц - в самый раз, почти ничего писать не надо.

<div id="Container">
    @Html.Partial("Partial2")
</div>
@Ajax.ActionLink(
    "Заменить",
    "Replace",
    "Test",
    new { someId = 12 },
    new AjaxOptions{
        UpdateTargetId = "Container",
        InsertionMode = InsertionMode.Replace,
        HttpMethod = "POST"
    })


public class TestController : Controller
{
    [HttpPost]
    public ActionResult Replace(int someId)
    {
        return PartialView("Partial2", someId);
    } 
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@LChaos
Можно например так, по щелчку по ссылке (измените на кнопку, если нужно). Метод контроллера должен возвращать PartalView. Содержимое div будет заменено на полученную вьюшку

<div id="addnewcar">
    @Html.ActionLink("Добавить машину", "AddCar", null, new
                   {
                       id = "car"
                   })
</div>


$(document).ready(function () {
        $('#car').click(function (event) {
            event.preventDefault();
            var url = $(this).attr('href');
            $('#addnewcar').load(url);
        });
    });
Ответ написан
Комментировать
bob_smith
@bob_smith
Форма отправляется ajax-ом? Если так, то в методе контроллера возвращать PartialView("PartialView2") и javasript'ом менять форму на полученную с сервера вьюшку.
Если обычным POST-запросом всей страницы, то аналогично, только возвращать View("PartialView2") :-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы