从javascript中的Session Provider类获取会话变量

时间:2014-07-08 10:41:17

标签: javascript asp.net-mvc razor

您好我有一个Session Provider类来处理我的MVC应用程序中的Sessions。

这是Session Provider Class ...

public class SessionProvider
    {
        public static Portal.Application.BoundedContext.ScreenPop.Dtos.User LoggedUser
        {
            get { return (Portal.Application.BoundedContext.ScreenPop.Dtos.User) HttpContext.Current.Session["LoggedUser"]; }
            set { HttpContext.Current.Session["LoggedUser"] = value; }
        }

        public static void Clear()
        {
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Session.Clear();
        }
    }

用于转换上述Session的User类具有这些属性。

  • 姓名
  • ******中国

我需要使用javascript在我的视图中获取这些姓名和电话号码。

到目前为止,我已经做了...

<script type="text/javascript">
    @{
        User loggedUser = SessionProvider.LoggedUser;     
    }

    var loggedUserName = loggedUser.Name ;
        var loggedUserPhone = loggedUser.PhoneNumber;

</Script>

但是当我运行我的应用程序时,我在firebug中出现了这个错误..

ReferenceError: loggedUser is not defined
var loggedUserName = loggedUser.Name;

我如何获得这两个值? 我正在使用Razor View引擎...

3 个答案:

答案 0 :(得分:1)

应该如下

<script type="text/javascript">
    @{
        User loggedUser = SessionProvider.LoggedUser;     
    }

    var loggedUserName = "@loggedUser.Name" ;
        var loggedUserPhone = "@loggedUser.PhoneNumber";

</Script>

您编写的代码将尝试在Javascript中访问服务器端对象,这根本不可能。您的客户端脚本对您的服务器端声明的变量一无所知,因此会抛出错误。因此,您必须在razor的帮助下打印属性值,并在javascript代码中将其用作字符串。

答案 1 :(得分:1)

试试这个;

<script type="text/javascript">
    @{
        User loggedUser = SessionProvider.LoggedUser;     
    }
    var loggedUserName = "@(loggedUser.Name)" ;
    var loggedUserPhone = "@(loggedUser.PhoneNumber)";
</Script>

以下帖子将帮助您理解正确的语法。

Razor’s @: and <text> syntax

答案 2 :(得分:0)

我认为应该这样做@:逃脱剃刀。

<script type="text/javascript">
@{
    User loggedUser = SessionProvider.LoggedUser;
  @:var loggedUserName = loggedUser.Name;
  @:var loggedUserPhone = loggedUser.PhoneNumber;
}
</Script>

但是你可以通过JS读取你的cookies。

var the_cookie = document.cookie;