【问题标题】:MVC application, set session variables then open asp.net popupMVC 应用程序,设置会话变量然后打开 asp.net 弹出窗口
【发布时间】:2023-03-12 09:22:01
【问题描述】:

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

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

这基本上是为了让我们能够运行 Crystal Reports,该链接将在会话变量中设置报表 ID,然后可以在 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();
        }
    }
}

【问题讨论】:

    标签: asp.net-mvc session popup


    【解决方案1】:

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

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

    就这么简单。 :)

    根据您修改后的问题,以下是一些附加点击事件并执行 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>
    

    【讨论】:

    • 谢谢,我已经对此进行了进一步研究,并在此处找到了一个示例。我似乎无法让它调用动作方法。 stackoverflow.com/questions/764965/… 我的控制器名为 Reports,当我在测试中使用 \Reports\FlagAsInappropriate 时,它​​什么也不做。我是否遗漏了什么或使用了错误的语法?
    • 好的,首先,您调用的 JavaScript / jQuery 代码是什么样的?你的控制器是什么样的?您是否尝试过调试以查看在进行 AJAX 调用时是否实际到达了控制器中的断点?
    • 嗨,是的,我在控制器中有一个断点,但没有到达。我什至开始了一个新的空白项目只是为了解决这个问题。我已将代码附加到主帖。
    • 有点语义,但记住“;”在您发出警报之后... :) 您如何将单击事件处理程序附加到应该执行 AJAX 调用的锚/按钮/元素?
    • ;在警报之后添加 :) 这是触发脚本 标记为不适当 的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多