【问题标题】:MVC3 Modal Dialog Based on Session Variable基于会话变量的 MVC3 模态对话框
【发布时间】:2012-08-10 02:12:06
【问题描述】:

我正在开发一个 MVC 应用程序,其中的数据是特定年份的。因此,我需要确保在查询任何数据之前设置工作年份。我之前问过这个问题,收到了回复here。这可以很好地将用户重定向到另一个页面。但是,这是有问题的,因为会话即将到期(我不希望它成为无到期会话)。因此,如果会话过期且用户处于操作中间,我不希望页面被重置,因为重定向到另一个页面以选择年份。

经过这么长的介绍(抱歉,我想说明我需要什么),我问,如果会话为空,是否可以创建模式对话框?

例如:

if (Session["Year"] != null)
{
    ...
}
else
{
    modal dialog to set year and go on our merry way...
}

我查看了 jquery UI 的示例,但它似乎没有解决我的特定难题。

感谢您的帮助。

【问题讨论】:

    标签: jquery asp.net-mvc-3 jquery-ui


    【解决方案1】:

    是的,这是用于对话框的 jQuery UI 组件。不过,您必须将它放在您的视图中,因此您必须将您拥有的任何会话值传递给视图,以便您可以在那里进行逻辑测试。

    http://jqueryui.com/demos/dialog/

    更新:

    您可以创建一个包含对话框的视图。接下来,您将覆盖在每个请求上执行的 OnActionExecuted Controller 操作。在此操作中,您将进行会话检查。

    然后您将使用 ViewBag 将值传递给您的主/布局视图。在该视图中,只需对 ViewBag 值进行逻辑检查,并适当地显示对话框。

    if (Session["Year"] != null)
    {
        ...
    }
    else
    {
    @Html.Raw(@"
    <script type='text/javascript'>
       $(document).ready(function(){ 
          $('#dialogID').dialog('open'); //I am not sure if this is proper way to open it
       });
    </script>")
    }
    

    【讨论】:

    • 感谢您的回复。我已经查看了 jQueryUI,并且确实看到了对话框选项。我的问题更侧重于如何实现对话并将其与会话变量一起使用。我目前正在使用 ActionFilter 进行重定向 - 我不想重定向到另一个页面,也不想在每个视图中放置相同的代码。
    • 更新了答案。无需执行每个视图,只需在布局中放置一次即可。
    • 如何让对话框加载?我在教程中看到单击按钮时如何执行此操作,但是如何使用剃刀块执行例如@if (Session["Year"] == null) { 加载 jquery 对话框}?顺便说一句,这还是相当新的,所以简单是有帮助的:)
    • 更新了答案。您只需使用 $(document).ready() 在页面加载时自动打开它
    • 它工作正常,但有一个问题。部分视图是一种形式(用于从数据库中选择可用的已定义年份)。对话框加载,但只要我选择一年,我就会被重定向到视图。所以,我的部分视图位于 SelectYear/Index。这就是对话框中加载的内容。选择年份后,我被重定向到 SelectYear/Index。有没有办法防止表单重定向?
    【解决方案2】:

    您可以在 javascript 中通过混合服务器端分配给 javascript 变量来执行此操作。例如。

    <script>
        $(function(){ 
            var showDiag = @(ViewData["Year"] ?? false);
            if(showDiag){
                //code to show
            }
        });
    </script>
    

    【讨论】:

    • 我将其合并到上述解决方案中。适用于轻微的 mod(使用会话,而不是 viewdata)。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2023-03-11
    • 2010-12-08
    • 1970-01-01
    相关资源
    最近更新 更多