2012-02-26 107 views
3

我在我的代码中的公共属性背后名为Tab,我试图访问页面aspx文件与JavaScript中,但我不知道如何获得正确的价值。从JavaScript访问C#变量

这给了我的价值我想

alert('<% Response.Write(this.Tab); %>'); 

这不

var x = <% =this.Tab %>; 
alert(x); 

任何想法?

+0

查看生成的源代码,你会得到启发(我希望) – SLaks 2012-02-26 23:57:11

回答

7

如果你查看你可能看到

var x = mystring; 

源我猜你想要的报价太

var x = "<%= this.Tab %>"; 

而不必联代码的,你为什么不看的RegisterStartupScript或的RegisterClientScriptBlock。

+0

这是它非常感谢你。 – 2012-02-27 01:54:31

1

如果this.Tab是一个字符串而不是一个数字,那么JS将会中断,因为在第二个示例中没有引用引号。

var x = '<%= this.Tab %>'; 
alert(x); 
2

什么

var x = "<% =this.Tab %>"; 

?这取决于当然的价值,但你必须生成有效的JavaScript。事实上,如果它是一个字符串,除非你完全控制它的值,并且你确定该值本身不包含引号字符,否则你可能想做的不仅仅是引用它。

0

两种方法做到这一点,一个是

var y = '<%=this.Tab %>'; 

您还可以在代码中使用JavaScriptSerializer背后,让来回报您的变量的值,以JavaScript代码的方法。这有助于如果你想返回你的私人数据,也可以实现更多的逻辑来获得你想要的值。

您的代码behind-

protected string GetTabValue() 
    { 
     // you can do more processing here 
     .... 
     .... 
     // use serializer class which provides serialization and deserialization functionality for AJAX-enabled applications. 

     JavaScriptSerializer jSerializer=new JavaScriptSerializer(); 
     // serialize your object and return a serialized string 
     return jSerializer.Serialize(Tab); 
    } 

你的aspx页面

var x = '<%=GetTabValue()%>'; 
    // called server side method 
    alert(x); 

用户还可以利用JavaScript的eval函数反序列化复杂的数据结构。

0

对于剃刀以下工作。

var x = '@yourc#variable';
alert(x);