您好我有一个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引擎...
答案 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>
以下帖子将帮助您理解正确的语法。
答案 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;