我正在开发一个MVC应用程序,其中数据是特定年份的。因此,我需要确保在查询任何数据之前设置工作年份。我之前问了这个问题并收到了回复here。这可以很好地将用户重定向到另一个页面。但是,这是有问题的,因为会话到期(我不希望它是一个没有过期的会话)。因此,如果会话暂停并且用户处于操作过程中,我不希望重置页面,因为重定向到另一个页面以选择年份。
经过长时间的介绍(道歉,我想说明我需要什么),我问,如果会话为空,是否可以创建一个模态对话框?
例如:
if (Session["Year"] != null)
{
...
}
else
{
modal dialog to set year and go on our merry way...
}
我查看了jquery UI的示例,但它似乎并没有解决我的特殊难题。
感谢您的帮助。
答案 0 :(得分: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>")
}
答案 1 :(得分:1)
你可以在javascript中使用服务器端分配到javascript变量的混合来执行此操作。例如。
<script>
$(function(){
var showDiag = @(ViewData["Year"] ?? false);
if(showDiag){
//code to show
}
});
</script>