从ajax调用Razor方法

时间:2015-05-14 09:57:51

标签: jquery ajax asp.net-mvc asp.net-mvc-4 razor

我在剃刀视图中写了一个函数来检查会话是否存在

@functions {
   public static bool CheckSession()
   {
     return System.Web.HttpContext.Current.Session["UserID"] == null;
   }
}

现在我所做的是,我希望在发送会话之前检查ajax是否存在。如果不存在则将用户重定向到登录

$.ajaxSetup({
    beforeSend: function (xhr) {
        var isSession = '@CheckSession()';
    }
});

但问题是,在之前的事件中我想每次重新评估它。

1 个答案:

答案 0 :(得分:0)

你不能像这样实现它。在返回html响应之前,@ {}块中的代码由服务器端的razor引擎评估。在任何情况下,您都必须进行服务器端调用以重新评估该方法。

您可以通过两种方法完成此操作 -

1)始终单独调用ajax来检查会话。但这很糟糕。

第二个更好的解决方案是

2)您可以使用自定义属性修饰控制器/操作。然后检查该属性中的会话有效性并返回特定响应。检查ajax成功回调中的响应值并重定向到登录页面。