Приложение MVC, установите переменные сессии, затем откройте всплывающее окно asp.net - PullRequest
1 голос
/ 15 января 2012

Мне интересно, возможно ли достичь следующего:

В приложении MVC - есть ссылка, которая запрашивает базу данных для некоторых значений, устанавливает эти значения в качестве переменных сеанса, а затем открывает всплывающее окно.окно вверх (которое является веб-формой asp.net в приложении MVC)

Это в основном позволяет нам запускать Crystal Reports, ссылка устанавливает идентификатор отчета в переменной сеанса, которая затем будет доступна в asp.net вебформ.Моя путаница заключается в установке переменной сеанса по щелчку ссылки и открытию всплывающего окна.Можно ли это сделать, и если да, то какие-нибудь ссылки или указатели?

Редактировать: Javascript

<script language="javascript" type="text/javascript">
   function flagInappropriate(postId) {

       var url = "/Home/FlagAsInappropriate/" + postId;

       $.post(url, function(data) {
       if (data) {
           alert("True")

           } else {
               // callback to show error/permission
           }
       });
   }

Контроллер

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {

        [AcceptVerbs("POST")]
        public bool FlagAsInappropriate(int id)
        {
            // check permission
            bool allow = true;

            // if allow then flag post
            if (allow)
            {
                // flag post

                return true;
            }
            else
            {
                return false;
            }
        }





        public ActionResult Index()
        {
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

        public ActionResult About()
        {
            return View();
        }
    }
}

1 Ответ

2 голосов
/ 15 января 2012

Это можно сделать, да. Я добился чего-то подобного в целях создания отчетов (преимущественно так, что URL-адрес отчета скрыт от пользователя, и поэтому некоторые отслеживание и аутентификация могут быть выполнены с использованием разовых токенов). Мое решение было следующим:

  1. Выполните AJAX-вызов веб-метода в вашем приложении, чтобы установить соответствующие переменные сессии.
  2. Возвращает значение из веб-метода, чтобы указать, было ли оно успешным.
  3. Для обработчика события «success» вызова AJAX откройте соответствующую страницу ASPX для создания отчета.

Все просто. :)

Вот пример кода для присоединения события click и выполнения вызова AJAX в зависимости от вашего измененного вопроса:

<a href="#" id="ajaxTest-1" class="flag">Click to test AJAX call</a>

<script type="text/javascript">
    $(document).ready(function () {
        $(".flag").click(function () {
            flagInappropriate($(this).attr("id").split("-")[1]);
        });
    });

    function flagInappropriate(postId) {
        var url = "/Home/FlagAsInappropriate/" + postId;

        alert(url);

        $.post(url, function (data) {
            if (data) {
                alert(data);

            } else {
                // callback to show error/permission
            }
        });
    } 
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...