MVC应用程序,设置会话变量然后打开asp.net弹出窗口

时间:2012-01-15 17:55:42

标签: asp.net-mvc session popup

我想知道是否有可能实现以下目标。

在MVC应用程序中 - 有一个链接查询数据库中的某些值,将这些值设置为会话变量,然后打开一个弹出窗口(这是MVC应用程序中的asp.net webform)

基本上允许我们运行Crystal Reports,链接会在会话变量中设置报告ID,然后可以在asp.net webform中访问。 我的困惑是点击链接然后打开弹出窗口设置会话变量。 是否可以完成任何链接或指针?

编辑: 的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 个答案:

答案 0 :(得分:2)

可以做到,是的。为了生成报告,我已经实现了类似的功能(主要是因为报告URL对用户是隐藏的,因此可以使用一次性令牌实现一些跟踪和身份验证)。我的解决方案如下:

  1. 对应用程序中的Web方法执行AJAX调用,以设置相关的会话变量。
  2. 从Web方法返回一个值以指示它是否成功。
  3. 对于AJAX调用的“success”事件处理程序,请打开相关的ASPX页面以生成报告。
  4. 这很简单。 :)

    以下是一些示例代码,用于附加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>