Мне нужна помощь с использованием jquery для публикации информации из Pop Up в действие контроллера MVC 3 - PullRequest
0 голосов
/ 03 августа 2011

Итак, у меня есть представление, которое позволяет пользователям утверждать или отклонять элементы, перечисленные на странице.После одобрения я просто использую @ Ajax.ActionLink, чтобы опубликовать соответствующее действие контроллера.Когда пользователь отклоняет элемент, пользователь должен указать причину отклонения.Я нашел код в Интернете, который дал мне всплывающее диалоговое окно и добавил текстовое поле и кнопки ОК / Отмена.Я могу захватить ввод от пользователя и показать его в предупреждении, но теперь мне нужно завершить его, и я не уверен, как.

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

2-й - мне нужен способ вызова действия контроллера из jquery.

Вот код, который у меня есть до этого момента.

Моя ссылка - это просто тег "a".Я не вижу возможности опубликовать код для этого без удаления <> a href = "# dialog" name = "modal" Отклонить

Мой скрипт обрабатывает это здесь

    $(document).ready(function () {

        //select all the a tag with name equal to modal
        $('a[name=modal]').click(function (e) {
            //Cancel the link behavior
            e.preventDefault();

            //Get the A tag
            var id = $(this).attr('href');

            //Get the screen height and width
            var maskHeight = $(document).height();
            var maskWidth = $(window).width();

            //Set heigth and width to mask to fill up the whole screen
            $('#mask').css({ 'width': maskWidth, 'height': maskHeight });

            //transition effect     
            $('#mask').fadeIn(1000);
            $('#mask').fadeTo("slow", 0.8);

            //Get the window height and width
            var winH = $(window).height();
            var winW = $(window).width();

            //Set the popup window to center
            $(id).css('top', winH / 2 - $(id).height() / 2);
            $(id).css('left', winW / 2 - $(id).width() / 2);

            //transition effect
            $(id).val('');
            $(id).fadeIn(2000);

        });

Вот мое всплывающее диалоговое окно и маска, которая затеняет экран при открытии диалогового окна.

    <div id="boxes">


    <div id="dialog" class="window">
        Enter the reason for rejection:</br>
        <textarea class="multiline" id="rejectreason" rows="10" cols="20"></textarea><br/>
        <div style="margin-left: 120px"><input type="button" value="OK" class="ok" style="width:70px"/> &nbsp;<input type="button" value="Cancel" style="width:70px" class="close"/>       
    </div>
</div>


<!-- Mask to cover the whole screen -->
   <div id="mask"></div>
</div>

Возможно, я поступаю совершенно неправильно, но это все, что я мог найти в сетии сложил все это оттуда.Поскольку это мой первый опыт работы с jquery и MVC, я немного борюсь здесь.Любая помощь будет принята с благодарностью.

Спасибо

ОБНОВЛЕНИЕ

ОК, поэтому я добавил в свою ссылку атрибут data-id, который позволяет мнеполучить идентификатор ссылки нажал.Я проверил это с помощью этого кода, и он работает.var iD = $ (this) .attr ('data-id');

Теперь мне нужно передать это значение в мой диалог, чтобы затем я мог получить его снова при нажатии кнопки ОК в диалоговом окне.При необходимости я могу установить скрытое поле на странице и извлечь его оттуда.

1 Ответ

1 голос
/ 03 августа 2011

Вот код, который поможет вам выбрать правильный путь ...

jQuery Ajax:

$(document).ready(function () {
    $("#InputButtonId").click(function () {
        $.ajax({
            url: '@Url.Action("SomeAction", "Controller")',
            type: 'POST',
            data: { id: $("#hidden").val(), reason: $("#rejectreason").html },
            dataType: "json",
            beforeSend: function () {
            },
            success: function (result) {
                // Do action if success
            },
            error: function (result) {
                // Do action if error
            }
        });
        return false;
    });
});

И действие контроллера:

[HttpPost]
public JsonResult SomeAction(string id, string reason)
{
    //Perform Actions
    return Json(new
    {
        value1 = value1,
        value2 = value2
    }, JsonRequestBehavior.AllowGet);
}

Надеюсь, это поможет.

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