C# 如何在脚本中传递MVC视图会话
我有一个mvc控制器,在控制器中处理会话中的所有Azure Api密钥,并在视图中传递它C# 如何在脚本中传递MVC视图会话,c#,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-3,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 3,Asp.net Mvc 5,我有一个mvc控制器,在控制器中处理会话中的所有Azure Api密钥,并在视图中传递它 public ActionResult Index() { Session["azureappkey"] = "xxx-xxxx-xxx-xx"; // pass to view return View(); } 鉴于: <h2>Index</h2> <p> @HttpContext.Current.Session["azureappkey"];<
public ActionResult Index()
{
Session["azureappkey"] = "xxx-xxxx-xxx-xx"; // pass to view
return View();
}
鉴于:
<h2>Index</h2>
<p> @HttpContext.Current.Session["azureappkey"];</p> // got the session value working as expected
@{
var x = HttpContext.Current.Session["azureappkey"]; // not working assign to variable and pass inside the script
<script>
alert(this.x);
alert (x); // GETTING UNDEFINED
</script>
}
索引
@HttpContext.Current.Session[“azureappkey”] //已使会话值按预期工作
@{
var x=HttpContext.Current.Session[“azureappkey”];//在脚本中分配给变量并传递时不起作用
警报(this.x);
警报(x);//未定义
}
Azure应用程序密钥写在段落标记中,但未在脚本部分中定义
任何人都可以更正实现。您当前使用的块是Razor块而不是JS块,并且您正在将会话状态内容分配给C变量而不是JS变量(请参见下面的范围): 如果Azure API键包含JSON字符串格式,请将
JSON.Encode
放入@Html.Raw
帮助程序中,正如Stephen所说:
<script>
var x = @Html.Raw(Json.Encode(HttpContext.Current.Session["azureappkey"]));
alert(x);
</script>
var x=@Html.Raw(Json.Encode(HttpContext.Current.Session[“azureappkey”]);
警报(x);
工作示例:问题是什么?什么不起作用?我在段落标记或dom中获取会话值,当我在变量x中赋值并在脚本块中传递时,我无法获取值。如何将其存储在变量中并在视图中的其他区域中继续。您正在尝试混合C#和JavaScript。通常情况下,您不想这样做。当我们使用模型并在脚本中为变量赋值时//Read embed application token from model var accessToken=“@model.embeddetoken.token”
var x=@Html.Raw(Json.Encode(HttpContext.Current.Session[“azureappkey”];);警报(x)代码>
<script>
var x = '@Html.Raw(HttpContext.Current.Session["azureappkey"])';
alert(x);
</script>
<script>
var x = @Html.Raw(Json.Encode(HttpContext.Current.Session["azureappkey"]));
alert(x);
</script>