我有ASP.NET MVC5项目,其中我使用setIession()为userId在控制器中设置会话值。 然后我需要在.js文件中检索或获取该值(并将其设置为TextBox)
但无法在.js文件中获取该值。
以下是我的.js文件代码
function populateUser() {
debugger;
$.ajax({
type: "GET",
url: '/UserProfile/SetSessionValues',
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (data) {
if (data) {
var user = $.session.get("UserName");
$("#txtUserName").val(user);
}
},
error: function (msg) {
alert("Error :" + msg.responseText);
},
});
}
答案 0 :(得分:2)
在您的控制器中: -
ViewBag.myVar = HttpContext.current.Session["UserName"].ToString();
您可以将参数指定为控件值
<input type="hidden" value = "@ViewBag.myVar" id="myHiddenVar" />
并轻松地在js文件中获取
alert($('#myHiddenVar').val());
答案 1 :(得分:0)
看看RazorJS。您可以在Nuget包管理器中找到它。
它允许您在.js
文件中使用类似剃刀的标签(例如:@data)。
答案 2 :(得分:-1)
您可以使用以下JavaScript变量:
HTML:
<head>
...
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
@RenderSection("my_script_variables", false)
<script src="@Url.Content("~/Scripts/external.js")" type="text/javascript"></script>
...
</head>
剃刀:
@Section my_script_variables {
<script type="text/javascript">
var variable1 = '@myVar1',
variable2 = '@Session["myVar2"]',
variable3 = '@ViewBag.myVar3';
</script>
}
外部JS:
alert(variable1 + ' ' +variable2 +' '+ variable3);
此外,您可以使用Neel建议的隐藏变量。
尝试此链接中的解决方案: