MVC 3 - Попытка передать модель между «родственными» частями с помощью ajax - PullRequest
0 голосов
/ 19 марта 2012

У меня есть MessagingContainer, который будет отображать частичное представление Входящие и Исходящие.Входящие и Исходящие будут переключаться внутри div при событии щелчка.Поскольку папка «Входящие» отображается при загрузке, передать модель очень просто.

MessagingContainer -

<div id="messagingContainer">
@{
    Html.RenderPartial(@"~Inbox.cshtml", Model);
}</div>

Существует ссылка для доступа к исходящей папке, которая вызовет событие ajax.

$('#outBox_@(instanceId)').unbind('click').bind('click', function () {
        $.ajax({
            type: 'POST',
            url: '/Messaging/GetOutbox',
            data: data,
            success: function (result) {
                $('#messagingContainer').html(result);                  
            },
            error: function (req, status, error) {
                alert('Failed Method: MessagingController.GetOutbox');
            }
        });
    });

Модель имеет несколько свойств и объектов впоэтому попытка воссоздать его как массив JSON будет долгой и утомительной.Моя единственная мысль сейчас заключается в том, чтобы передать Model.Id контроллеру, повторно извлечь объект Model и затем передать эту вновь извлеченную модель в часть Outbox.

Мне было просто любопытно, если бы был более простой способ сделать это, с которым я еще не сталкивался.

1 Ответ

0 голосов
/ 19 марта 2012

Я мог бы предложить вам рассмотреть возможность использования отдельных действий папки «Входящие / исходящие» с одинаковыми или разными представлениями, а затем использовать Html.Action() для визуализации папки «Входящие» в вашем действии индекса, предоставляя только частичный HTML при переключении в папку «Исходящие».

Контроллер

public ActionResult Index()
{
    var pageModel = new PageModel { ... };
    return View(pageModel);
}

public ActionResult GetInbox()
{
    var mailboxModel = new InboxModel { ... };
    return PartialView( "_Mailbox", mailboxModel );
}

public ActionResult GetOutbox()
{
    var mailboxModel = new OutboxModel { ... };
    return PartialView( "_Mailbox", mailboxModel );
}

Представление (индекс)

 <div id="messagingContainer">
 @{
       Html.RenderAction("getinbox");
 }
 </div>

Ваш код AJAX в основном остается тем же, но вы отображаете только частичный HTML только для исходящих сообщений вответ, и вы, вероятно, можете повторно использовать достаточное количество кода для своих действий Входящие / Исходящие, вероятно, включая само частичное представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...