Проблемы с открытием PartialView в диалоговом окне jQuery UI - PullRequest
0 голосов
/ 10 мая 2011

Я использую Загрузка частичного вида в jquery.dialog в качестве ссылки, чтобы открыть некоторые частичные виды внутри диалогового окна.Это сработало для меня несколько раз, но теперь, когда я пытаюсь использовать точно такую ​​же настройку, она просто не работает ...

У меня есть две проблемы, о которых я хотел бы спросить...

Открывается диалоговое окно, затем, как только оно открывается, страница перенаправляется в вызываемый ActionMethod, который возвращает частичное представление.Таким образом, я получаю не стилевую страницу, которая отображает правильную информацию.Вот код:

    public ActionResult Compare()
        {
            var user = _helper.GetUserFromSession(HttpContext.User.Identity.Name);
            var items = user.WatchList.ToList();
            var viewModel = Mapper.Map<IList<Item>, List<IndexItem>>(items);
            return PartialView(viewModel);
        }

А вот код jQuery:

        $('#compareItemsDialog').dialog({
            autoOpen: false,
            width: 850,
            height: 600,
            draggable: false,
            dialogClass: "compareDialog",
            title: 'Compare',
            open: function (event, ui) {
                $(this).load("/WatchList/Compare");
            }
        });
        $('#watchListCompareLink').click(function () {
            $('#compareItemsDialog').dialog('open');
        });

Я просто не понимаю, почему это вызывает проблемы ... Яполучил другие частичные представления, которые настроены точно так же, но они работают отлично!

ОБНОВЛЕНИЕ: Выше было решено.Теперь мне просто нужен ответ на проблему, описанную ниже ...

Как передать пользовательские параметры / данные вместе с вызовом в диалог?Я думаю, может быть, я мог бы сделать что-то вроде $('#compareItemsDialog').dialog('open', { id = someVar }); Так это вообще возможно?

Ответы [ 3 ]

1 голос
/ 11 мая 2011

Вопрос: Как передать пользовательские параметры / данные вместе с вызовом в диалоговое окно?

Вместо прямого вызова диалогового окна jQuery, оберните эту функцию в свою собственную пользовательскую функцию javascriptкоторый принимает ваши пользовательские данные.Тогда имейте свою логику ветвления JavaScript там.

0 голосов
/ 11 мая 2011

Как передать пользовательские параметры / данные вместе с призывом к диалогу?

Вы можете использовать jQuery Data для передачи данных в диалоговое окно.

http://api.jquery.com/jQuery.data/

Вот подробный пример использования:

Передача данных в диалоговое окно jQuery UI

0 голосов
/ 10 мая 2011

Я не вижу в документах по пользовательскому интерфейсу jQuery, где вы можете передать в диалог параметр open:. Это из старой версии jQuery UI?

Я часто загружаю частичные представления в диалоги, но делаю это немного иначе (наоборот).

Сначала я отправляю ajax-запрос на сервер, чтобы получить частичное представление. Затем в случае успеха замените содержимое HTML диалога и, наконец, откройте его.

$.ajax({
    url:"/action/param",
    success:function(data){
           $("#Dialog > some_inside_div").html(data);
           $("#Dialog").dialog("open");
           }
   });

Насколько ваш второй вопрос. Я не уверен, как вы могли бы передать пользовательские данные в диалоге. Переменная options расширяется при построении диалогового окна, но вам придется добавить свою собственную логику, чтобы что-то сделать с данными. Вы можете получить не минимизированный источник инфраструктуры пользовательского интерфейса и попытаться расширить его самостоятельно.

...