Javascript 无法通过<;%%访问JS/jQuery中的变量变量%>;

Javascript 无法通过<;%%访问JS/jQuery中的变量变量%>;,javascript,c#,jquery,asp.net,Javascript,C#,Jquery,Asp.net,我正在尝试从JavaScript/jQuery访问asp.net变量(c#) 我找到了一个解决办法,而且。但不幸的是,这些都不适合我 这里有一个片段: Default.aspx.cs public partial class Default : System.Web.UI.Page { public string CurrentUser { get; set; } protected void Page_Load(object sender, EventArgs e) {

我正在尝试从JavaScript/jQuery访问asp.net变量(c#)

我找到了一个解决办法,而且。但不幸的是,这些都不适合我

这里有一个片段:
Default.aspx.cs

public partial class Default : System.Web.UI.Page
{
    public string CurrentUser { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        CurrentUser = User.Identity.Name.Split('\\')[1]; //I need the value of "CurrentUser"
    }
    ...
}
$(document).ready(function (){
    var _currentUser = "<% =CurrentUser %>"; // e.g. _currentUser = "minimen"
    ...
});

script.js

public partial class Default : System.Web.UI.Page
{
    public string CurrentUser { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        CurrentUser = User.Identity.Name.Split('\\')[1]; //I need the value of "CurrentUser"
    }
    ...
}
$(document).ready(function (){
    var _currentUser = "<% =CurrentUser %>"; // e.g. _currentUser = "minimen"
    ...
});
$(文档).ready(函数(){
var _currentUser=“”;//例如_currentUser=“minimen”
...
});
_currentUser的值始终为“”

有什么想法吗?

C#JS文件中的代码不会被执行-因此该值保持为
。要按照您的要求执行,您需要:

  • 在ASPX页面中执行此JS代码
  • 从返回所需信息的JS文件向服务器发出AJAX请求

您不能从单独的脚本文件中访问页面字段。将代码放在Default.aspx的head元素中,它就会工作。

您应该将客户端使用所需的任何值注入页面,而不是JavaScript。如果您使用巧妙的脚本技术(例如,从视图生成JS文件),则会取消对“页面”(脚本)的所有可能缓存,这对网站的商业部署有严重影响

通常,您会使用输入
type=“hidden”
或将
数据-
属性值注入关键DOM元素(如
body
)。您可以非常简单地从JavaScript/jQuery中获取它们:

1.隐藏字段 e、 g.对于带有
id=“currentuser”

HTML:

2. <代码>数据-属性 或者将该值作为
data-
属性添加到关键DOM元素上,例如
body
元素上

HTML:

3.在页面中注入全局变量 最糟糕的情况是,在页面顶部有一小段Javascript注入全局变量值:

HTML:

我在Razor布局文件中使用最后一种技术只是为了一个简单的目的。在当前网站上注入站点根URL,以便可用于任何相关Ajax调用:

e、 g.在Razor布局文件中

<script>
    window.siteRoot="@Url.Content("~/")";
</script>

window.siteRoot=“@Url.Content(~/”);

@greg这不是问题所在
$(document).ready(function (){
    var _currentUser = $('body').data('currentuser');
    ...
});
<script>
    window.currentuser="<% =CurrentUser %>";
</script>
$(document).ready(function (){
    var _currentUser = window.currentuser; // or just currentuser
    ...
});
<script>
    window.siteRoot="@Url.Content("~/")";
</script>