Session MVC 4代码文件(.cs)重定向到操作

Session MVC 4代码文件(.cs)重定向到操作,session,asp.net-mvc-4,Session,Asp.net Mvc 4,我已经创建了一个.cs文件,在其中检查会话值。 我使用的会话如下所示 HttpContext.Current.Session["usrprof"] 它写在一个简单的.cs文件中。 如果我在控制器中,我可以使用它,但我可以在normal.cs文件中使用它吗 如果我在会话中没有获得任何信息,是否可以使用重定向到操作 if (HttpContext.Current.Session["usrprof"] == null) //redirect to action. 您可以简单地使用来自响应对象的重

我已经创建了一个.cs文件,在其中检查会话值。
我使用的会话如下所示

 HttpContext.Current.Session["usrprof"]
它写在一个简单的.cs文件中。
如果我在控制器中,我可以使用它,但我可以在normal.cs文件中使用它吗
如果我在会话中没有获得任何信息,是否可以使用重定向到操作

if (HttpContext.Current.Session["usrprof"] == null)
//redirect to action.

您可以简单地使用来自响应对象的重定向

if (HttpContext.Current.Session["usrprof"] == null)
{
    HttpContext.Response.Redirect("/Controller/Action");
}

希望有帮助

您可以在CS文件中使用
会话
,是的,只要您有权访问
会话
对象

要使用重定向操作,您可以执行以下操作:

public ActionResult TestMethod()
{
    if (HttpContext.Current.Session["usrprof"] == null) {
        return RedirectToAction("Index");
    }

    return View();
}

它将检查
usrprof
是否为
null
,是否将它们重定向到
索引(或您的视图)。否则,如果
userprof
不是
null
,返回默认视图。

HttpContext.Current
是一个可供所有代码使用的静态视图-当不在web上下文(即web应用程序)下运行时将为空。

如果要从
cs
文件重定向,则必须从响应对象重定向,如下面的代码段所示

   HttpContext.Current.Response.Redirect(~/Account/Login, true);

在上面的代码中,帐户是
控制器
名称是登录是
操作

我创建了一个单独的类文件来处理所有会话值。现在我可以在该.cs文件中使用RedirectToAction(“”)了吗?@Shekhar-这样做通常不是个好主意。为什么?因为你现在有了“意大利面密码”。如果您开始在某个调用树的深处重定向,您可能无法轻松地找出它在哪里执行此操作。这就是为什么您应该遵循软件开发的“一个入口,一个出口”规则。如果需要重定向,则向调用链发送一些信息,通知操作方法进行重定向。@MystereMan您是对的。但是我想创建一个静态类来访问所有会话变量。而不是在单个控制器操作上使用它。在我的情况下,我可以使用
RedirectToRoute
吗?@Shekhar也许更好的方法是将它放在派生自的基本控制器中,或者作为控制器的扩展方法。@Shekhar-不,RedirectToAction是一个ActionResult,只有从控制器操作方法返回时才能工作。您可以在调用链上返回RedirectToAction,然后让action方法返回该操作,但这意味着您的代码必须引用MVC程序集。。这可能是个问题。