Невозможно открыть частичное представление в диалоге jquery, несмотря на примеры обратного

Поэтому, несмотря на множество примеров и ответов на переполнение стека, я обнаружил, что невозможно открыть частичное представление MVC в качестве диалога jquery. Диалог открывается, но содержимое всегда пусто. Похоже на то .функция load () полностью игнорируется. Вот мой код, буду признателен за любой ввод. Это, наверное, что-то простое, как всегда.

У меня есть DIV в основном теле моей формы:

Введите описание изображения здесь

У меня есть кнопка и скрипт, который реагирует на щелчок кнопки и открывает диалог. Вот что код:

** Введите описание изображения здесь**

Когда я нажимаю кнопку, Я всегда получаю пустой диалог, как показано здесь:

Введите описание изображения здесь

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

Введите описание изображения здесь

Виновник, кажется, сам .функция load (). Независимо от того, что я вкладываю в него, диалог остается пустым. Я могу поместить полный мусор в контроллер или имя действия Url.Действие и / или замена Url-адреса.Действие с жестко закодированным именем пути, которое не существует, но код не взрывается, я все равно получаю пустой диалог:

Введите описание изображения здесь

Любые и все мысли оценены.

2 ответа

  1. Сначала необходимо load()просмотреть содержимое диалогового окна, а затем открыть его.

    Что-то вроде:

    $('#AttachmentDialogue').load('@Url.Action(...)', function() {
        $(this).dialog('open');
    });
    

    (Вы также должны опустить свой ток load()в openобратном вызове)

  2. Хорошо, я нашел ответ на этот вопрос. Если у вас есть метод действия в контроллере, украшенном [HttPost], и нет метода для обработки [HttpGet], load() автоматически завершит работу и вернет пустой HTML.

    Я в спешке украсил метод действия неправильным атрибутом, POST вместо GET. Что странно, так это то, что если вы введете URL-адрес в поле адреса IE, вы получите то, что ожидаете: ошибка «страница не найдена», когда у вас нет метода для обработки GET that results from the load(). Однако при попытке загрузить ту же страницу (ну, частичное представление) из jquery, вы не получаете никакой ошибки-просто молчание.

    Так, ниже, если второе действие существует в контроллере, load () для частичного представления «_AttachmentViewer» будет успешным. Если его нет, load () завершается беззвучно и диалоговое окно остается пустым. GET / POST имеет смысл и был моей ошибкой; тихая неудача удивляет меня.

    Введите описание изображения здесь