Возвращает несколько частичных представлений в главном представлении на основе действий в частичных представлениях

#jquery #asp.net-mvc #ajax

#jquery #asp.net-mvc #ajax

Вопрос:

У меня есть это представление, основанное на модели person, которая является моделью сущности.

 @model TestApp.Models.Person

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@Html.Partial("../PersonContactData/Create");
  

Затем мой контроллер PersonContactData возвращает частичное представление «Создать», которое имеет форму и кнопку отправки. Когда я нажимаю эту кнопку отправки, я выполняю перенаправление на индекс из контроллера PersonContactData, и я хочу вернуть представление из индекса на страницу, описанную выше.

Как мне это сделать?

И я хочу, чтобы все это происходило без обновления страницы. Я могу передать все значения с помощью ajax, но мне нужен какой-то «контейнер» или что-то еще, чтобы фактически использовать частичные представления (список, создание, редактирование, .. из PersonContactData), которые возвращаются в основное представление, основанное на модели Person. Другими словами, действия, соответствующие им частичные представления и их функциональность могут работать на странице, основанной на другой модели (Person) и контроллере (PersonController)

Это, например, функция ajax post, которую я использовал для получения значений из представления create. Это работает, но все же я хочу перенаправить на индекс действия в моем HttpPost Create action и вернуть представление для индекса, как это должно работать. Но мое основное представление (основанное на модели Person) не будет отображать его.

 function ACGetList() {
        var personContactData = {
            ContactType: $('#ddlContactDataType').val(),
            Value: $('#txtContactDataValue').val()
        };
        $.ajax({
            url: '/PersonContactData/Create',
            type: 'POST',
            data: JSON.stringify(personContactData),
            dataType: 'Json',
            contentType: 'application/json; charset=utf-8',
            success: function () { },
            error: function () { }
        });
    }
  

Ответ №1:

Насколько я знаю, нормально.

Система MVC — это структура на стороне сервера или фреймворк. M=модель, V= представление,C= контроллер.

Модели — это проверки, db и т.д., View — это разметки, json, css, xml и т.д… Контроллеры — php, asp, поэтому вы можете указать, что и когда показывать.

Насколько я понимаю ваш вопрос, вы просто просите использовать ajax.

Что делает ajax, так это запрашивает страницу и повторно отправляет некоторые данные или все их на главную страницу с помощью js. Проверьте jQuery .ajax функцию или погуглите ее.

итак, допустим, ваша домашняя страница:

mysite.com ВОЗВРАТ <h1>Hello World!</h1>

Затем страница ajax имеет
<p>I am ajax</p>

затем на домашней странице с помощью js / jq вы можете указать, куда вы хотите, чтобы «я — ajax» перешел

Комментарии:

1. В моем проекте я использую ajax для получения частичного представления ‘Create’ (на основе модели PersonContactData), которое вставляется в мое основное представление (на основе модели Person). Но все же, если я нажму на кнопку (onclick function ACGetList теперь отображается в главном разделе) из частичного представления, я хочу, чтобы моя функция RedirectToAction вернула другое частичное представление на главную страницу (на основе модели пользователя)

2. хорошо, при успешном использовании ajax вы можете добавить в него другой ajax или использовать функцию очереди, которая произойдет сразу после этого, если вы перенаправляете его на стороне сервера, вы просто заставляете браузер перейти в другое местоположение. Скачайте firebug в вашем Firefox, это поможет вам лучше понять это и правильно отладить ваш скрипт, тогда вы сможете видеть, что возвращает каждый ajax-запрос.