3 MVC2 формирует одно диалоговое окно Jquery UI - PullRequest
0 голосов
/ 22 августа 2011

У меня есть одно частичное представление, которое я загружаю с помощью диалогового окна Jquery UI.Это частичное представление имеет 3 формы, которые я инициализирую следующим образом ...

    <%using (Html.BeginForm("SearchByDemographic", "PatientACO", new { @PopID =   (int)ViewData["POPID"] }, FormMethod.Post, new { name = "addPat",  id = "DemoGraphID"  }))
    { %>

    <% using (Html.BeginForm("SearchByMRN", "PatientACO", new { @PopID = (int)ViewData["POPID"] }, FormMethod.Post, new { id = "MrnID" }))%>
  <%{

    <% using (Html.BeginForm("AddPatToPop", "PatientACO", new { @PopID = (int)ViewData["POPID"] }, FormMethod.Post, new { id = "AP2PID" }))%>
  <%{%>

Как видите, каждая из этих форм относится к разным действиям на одном и том же контроллере при нажатии кнопки отправки ...Первые два действия возвращают данные json через ajax, чтобы заполнить раскрывающийся список.Как я могу написать ответ диалога Jquery UI правильно для этой конкретной функции.Имейте в виду, что я почти полный новичок в Jquery.У меня это работало с использованием SimpleDialog ... Я до сих пор изо всех сил пытался добавить функциональность на стороне клиента к моим веб-сайтам, добавляя библиотеки Jquery ... Вот в настоящее время, как я обрабатываю отправку кнопок.Я уверен, что это не справится со всеми функциями, которые мне понадобятся, почему?Я не мог начать говорить тебе ... Просто предчувствие.Я тестировал функциональность в моей визуальной студии, и я не могу выполнить свое второе действие (searchByDemographic) ... Так что это говорит мне о том, что что-то настроено не совсем правильно.Кроме того, кто-нибудь знает какие-либо хорошие учебники Jquery.Возможно, мне придется немного поднять этот язык.Я определенно чувствую себя немного обнаженным, пытаясь добавить эту функцию и имея представление о том, как она работает ...

    // jQuery Ajax-Post only works in repeatable manner when link that opens SimpleDialog can be placed 
    // outside the PartialView. Otherwise, calls to SimpleDialog fail on second and subsequent clicks. 
    // Need to use full postback in this case.
    $("#btnSubmit").live('click', function (event) {
        event.preventDefault();
        var $target = $(this).attr("name");
        var $url = $("#target").attr("action");
        $.ajax({
            url: $url,
            type: 'POST',
            data: $("#target").serialize(),
            success: function (response) {
                $.simpleDialog.close();
                $($target).html(response);
                $("#ajaxResult").hide().html('Record saved.').fadeIn(300, function () {
                    var e = this;
                    setTimeout(function () { $(e).fadeOut(400); }, 2000);
                });
            },
            error: function (xhr, status) {
                $("#ajaxResult").html(xhr.responseText).show();
                $.simpleDialog.close();
            }
        });
    });

Если у кого-либо есть какие-либо советы, ссылки на хорошие учебные пособия или примеры того, каксделай это, я определенно буду признателен.

1 Ответ

0 голосов
/ 24 августа 2011

Я был здесь идиотом ... Вероятно, поэтому я могу получить консервы.Ну что ж, лучше выходить в сиянии славы ... Но вот что я сделал, чтобы решить мою проблему.Я пошел к частичному представлению и взглянул на его функции публикации ajax ... Оказывается, я жестко закодировал адреса, и именно поэтому он не работал на сервере ...

     $(function () {
    $("#MRNSubmit").click(function (e) {
        e.preventDefault();
        var form = $("#MrnID");
        var srlzdform = form.serialize();
        var PopID = <% =PopID %>
        var options = [];
        var $url = $("#target").attr("action");
        var serializedForm = form.serialize();
        $.post('<%:Url.Action("SearchByMRN", "PatientACO")%>', srlzdform, function (data){
            options = $.map(data, function (item, i) {
                return "<option value=" + item.Value + ">" + item.Text + "</option>";
            });
            $("#PatientListToAdd").html(options.join(""));

        });
    });
});
$(function () {
    $("#DemoGraphSubmit").click(function (e) {
        e.preventDefault();
        var form = $("#DemoGraphID");
        var srlzdform = form.serialize();
        var PopID = <% =PopID %>
        var options = [];
        var $url = $("#target").attr("action");
        var serializedForm = form.serialize();
        $.post('<%:Url.Action("SearchByDemographic", "PatientACO")%>', srlzdform, function (data){
            options = $.map(data, function (item, i) {
                return "<option value=" + item.Value + ">" + item.Text + "</option>";
            });
            $("#PatientListToAdd").html(options.join(""));

        });
    });
});

Этотеперь работает отлично.Боюсь, слишком поздно, слишком поздно.

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