0

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

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

例如:

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

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

谢谢你的帮助。

4

2 回答 2

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>")
}
于 2012-08-08T13:31:33.260 回答
1

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

<script>
    $(function(){ 
        var showDiag = @(ViewData["Year"] ?? false);
        if(showDiag){
            //code to show
        }
    });
</script>
于 2012-08-09T14:47:37.877 回答