Как отправить в диалоге jQuery с помощью кнопок с разными значениями - PullRequest
0 голосов
/ 20 августа 2009

Я бы хотел использовать диалог jQuery для замены некоторого кода, который я сейчас использую в приложении ASP.NET MVC. В старом коде использовались кнопки «Отправить» с различными настройками «значения». Я также хотел бы знать, есть ли лучший подход.

Это пример существующего кода в представлении:

        <%using (Html.BeginForm("SubmitValue", "MyController", FormMethod.Post))
    { %>
        <span class="field-description">My Value:  </span>
        <input id="myTextValue" maxlength="6" name="myValue" type="text"/>
        <%=Html.Hidden("myModel.myProperty1", Model.PropertyValue1) %>
        <%=Html.Hidden("myModel.myProperty2", Model.PropertyValue2) %>
        <div class="pageaction button">
             <strong>
                 <input name="submitButton" type="submit" value="Save"/>
            </strong>
            <strong>
                <input name="submitButton" type="submit" value="Delete"/>
            </strong>
            <strong>
                <input type="button" value="Cancel" />
            </strong>
         </div>
    <% } %>

Контроллеру потребуется значение нажатой кнопки отправки:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult SubmitValue(MyModel model, string submitButton)
    {
        _request.myProperty1= model.PropertyValue1;
        _request.myProperty2= model.PropertyValue2;
        if (submitButton == "Save")
        {_myService.UpdateValue(_request);}
        else
        {_myService.DeleteValue(_request);}

        return View("MyView", _request);
    }

Для пользовательского интерфейса jQuery я бы хотел использовать часть кода «кнопки» для обработки значений отправки.

$(function() {
$("#dialogWindow").dialog({
    bgiframe: true,
    autoOpen: false,
    height: 200,
    modal: true,
    open: function(e, ui) {            
        $("#dialogWindow :input[name='myValue']").val(currentValue);
    },
    buttons: {
        'Save': function() {
            // TODO: submit as if a submit button with the value 'Save' is used
            $(this).dialog('close');
        },
        'Delete': function() {
            // TODO: submit as if a submit button with the value 'Delete' is used
            $(this).dialog('close');
        },

        Cancel: function() {
            $(this).dialog('close');
        }
    },
    close: function() {
        //close code
    }
});

});

1 Ответ

0 голосов
/ 20 августа 2009

Я только что кратко просканировал ваш вопрос, и хотя я думаю, что вы пытаетесь сделать, выполнимо, я не думаю, что это правильный путь.

Вся идея должна состоять в том, чтобы разделить проблемы. Я думаю, что если вы начнете функцию «запутывания» в одно действие, тогда это действие может стать переполненным и его трудно поддерживать.

Я думаю, вы должны попытаться приблизиться к модели, в которой каждая кнопка отправки будет вызывать свой собственный jQuery ActionResult. Это приводит к разделению проблем, поддерживает аккуратность ActionResult и очищает ваш код.

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

Также я только что заметил, что ваше диалоговое окно работает совсем немного, и это также рискует стать загроможденным. Я, и это только личное мнение, предпочел бы иметь три диалоговых окна, каждое из которых делает свое дело. Я бы настроил свои CSS, так что изменение там отражается на всех из них. Тогда каждое диалоговое окно будет отправлять сообщение в свой собственный ActionResult.

Если я неправильно понял ваш вопрос, дайте мне знать, и я постараюсь помочь вам.

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