несколько нажатий кнопки в asp.net MVC 3 - PullRequest
1 голос
/ 15 октября 2011

У меня несколько динамических кнопок на моей странице asp.net mvc 3. Каков наилучший способ обработки нажатия кнопки в asp.net MVC 3? в asp.net нет обработки событий, так что лучше всего это сделать .?

Ответы [ 3 ]

2 голосов
/ 15 октября 2011

Вы можете обрабатывать нажатия кнопок, используя JavaScript, подписавшись на их событие нажатия. Например, с помощью jQuery вы можете присвоить этим кнопкам класс, а затем:

$(function() {
    $('.someClass').click(function() {
        // a button was clicked, this will point to the actual button
    });
});

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

Предположим, например, что у вас есть следующая форма с несколькими кнопками отправки:

@using (Html.BeginForm())
{
    ... some input fields

    <button type="submit" name="Button" value="delete">Delete data</button>
    <button type="submit" name="Button" value="save">Save data</button>
}

Теперь внутри действия контроллера, которое вы публикуете, вы можете определить, какая кнопка была нажата:

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    var button = Request["button"];
    if (button == "save")
    {
        // the save button was clicked
    }
    else if (button == "delete")
    {
        // the delete button was clicked
    }

    ...
}
1 голос
/ 15 октября 2011

Если для кнопок не требуются одинаковые данные формы, вы можете создать две формы с разными методами действия. Это самое простое решение.

Если вам нужно использовать одни и те же данные формы, то существует ряд методов, в том числе подходы Дарина и Тванфоссона. Существует также подход, основанный на атрибутах, который выберет правильный метод действия в зависимости от того, какая кнопка нажата.

http://www.dotnetcurry.com/ShowArticle.aspx?ID=724

1 голос
/ 15 октября 2011

Зависит от того, что делают кнопки. Если они являются логически отдельными действиями, то вы можете сделать каждую обратную передачу отдельным действием на стороне сервера. Часто это также работает, они представляют собой варианты одного и того же действия, например «Сохранить и отменить», например, когда «Сохранить сообщения» возвращает форму, а «Отмена» перенаправляет вам предыдущий URL-адрес (скажем, возвращаясь к деталям после редактирования). Если кнопки представляют разные данные, которые будут отправлены обратно в одно и то же действие, вы можете присвоить им разные значения. Если кнопки названы, значения будут отправлены обратно вместе с остальной частью формы, при условии, что они включены в форму. При отправке сообщений из AJAX может потребоваться явная сериализация значения кнопки вместе с формой.

Пример сохранения / отмены

@using (Html.BeginForm())
{
   //...
   <button type="submit" class="submit-button button">Save</button>
   @Html.ActionLink( "Cancel", "details", new { ID = Model.ID }, new { @class = "cancel-button button" } )
}

Затем используйте CSS, возможно, в сочетании с jQuery UI для стилизации кнопок.

<script type="text/javascript">
   $(function() {
       $('.button').button();
       ...
   });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...