在ASP.NET代码块中使用javascript变量

时间:2013-11-22 15:45:10

标签: javascript asp.net

我有一个相当简单的问题,似乎无法解决。

我有一个javascript代码块;

<script>
 var user = {
       id: 1,
       username: 'myname' 
};

window.location.href = '<%# Page.GetRouteUrl("member", New With {.member = --username--})%>';
</script>

在上面的代码中,我需要用我的javascript对象中的user.username替换--username-- ..如果你能帮助我完成这个,我将不胜感激。

修改

我无法从服务器端获取用户名,因为用户名是来自facebook的用户名,我使用javascript API获取...

3 个答案:

答案 0 :(得分:1)

您应该在服务器端使用一些占位符作为用户名,并在客户端使用真实用户名替换它:

<script>
 var user = {
       id: 1,
       username: 'myname' 
};

window.location.href = '<%# Page.GetRouteUrl("member", New With {.member = "__USERNAME__"})%>'.replace('__USERNAME__', user.username);
</script>

答案 1 :(得分:0)

类似的东西:

window.location.href = '<%# Page.GetRouteUrl("member", New With {.member = %>' + user.username + '<%})%>';

答案 2 :(得分:0)

只是你不能

<强>解释 在时间0:将在服务器端评估asp.net代码块

在时间1:评估的标记将被发送到客户端(将所有服务器端代码块转换为HTML)

在时间1.1:JavaScript将在浏览器上进行评估,因此您无法访问过去

黄金法则是:

  • 服务器端代码可以生成客户端代码(例如,Literal Control可以生成HTML和JavaSCript)
  • 客户端代码无法生成服务器端代码(JavaScript或HTML连接无法生成文字控制)

e.g。将数据从服务器端传递到客户端

<div><asp:Literal runat="server" text="ServerSideVariableOnly" /></div>

OR

<script>
 var pageurl = '<asp:Literal runat="server" text="AnotherServerSideVariable" />'
</script>

做你想做的事你有两个选择:

  1. 您必须进行ajax调用(客户端&lt; ---服务器)以获取更多信息,或
  2. 在加载页面之前填充所需的数据。