2013-10-19 41 views
0

我正在尝试将document.getElementById与动态变量一起使用。如何使用c#变量设置getElementById的动态ID

动态变量将根据从URL后面的代码(c#)中读入的查询字符串进行设置。

因此,举例来说,这将是它工作的理想方法:如何

<script> 
    document.getElementById(myVar) 
</script> 

任何想法:

C#代码背后:

string myVar = Request.QueryString[0]; 
myVar = myVar + "Link"; 

的JavaScript让这个工作?

+0

然后呢?你的问题到底是什么?顺便说一句:'var'是一个Javascript关键字 - 将它改为'myVar',或者其他有意义的东西。 – 2013-10-19 22:26:21

+0

我更新了我的问题,使我要求更清楚。 – Kevin

回答

2

你可以简单地在一个脚本块插入此您的.aspx页面上(注意,避免使用“VAR”作为名称,因为这是在Javascript中的保留字):

<script> 
    var id = '<%= HttpUtility.JavaScriptStringEncode(Request.QueryString[0]) + "something" %>'; 
    document.getElementById(id); 
</script> 

你可以注入成从代码的页面背后用​​:

Page.ClientScript.RegisterStartupScript(this.GetType(), "QueryId", 
    string.Format("<script>var id='{0}';</script>", 
     HttpUtility.JavaScriptStringEncode(Request.QueryString[0]) + "something" 
    ) 
); 
+0

必须始终逃避用户的输入。尝试<%= HttpUtility.HtmlEncode(Request.QueryString [0])%> –

+0

@mike谢谢,这是我的sl。。 – McGarnagle

+0

真棒我会给这个尝试,并在我测试后正确地标记它!这比我想象的要容易得多。 – Kevin

1

的事情是,你不能只用JS服务器端通信时,JS是一个客户端,这样你就不会得到你所创建的变量在ServerSide中。

为了得到他们,你会需要:

<%= write_the_thing_here %> 

为您的代码,你会写:

string someThing = "<%= HttpUtility.HtmlEncode(Request.QueryString[0]) %>"; 
// now use this someThing in the document..you can use var instead of string 
// but not them both.. 
document.getElementById(someThing); 
// note the semicolon on the end, to close it.. 

,则不应使用string var,因为他们是在JavaScript中的数据类型和ASP.NET一样,所以代码可能会困惑,想到这到底是什么。取而代之的是

,你也可以尝试写一个隐藏的输入字段作为

<input type="hidden" name="someThing" value="@Request.QueryString[0]" /> 

然后用它做你想要做动态什么都。如果你真的想使用服务器的ID,这可能是这样做的简单方法。

关于jQuery的哥们

对不起:

var someThinge = $('input[type="hidden"]').val(); 

,然后继续你的工作!

帮助笔记Alexei Levenkov:JavaScript中的分号是可选的。它们的主要用途是区分由混淆器/最小化工具(工具或人)或正常开发人员编写的代码:)

+0

备注:JavaScript中的分号是可选的。它们主要用于区分由混淆器/最小化工具(工具或人员)或正常开发人员编写的代码:)。同样@mike对其他答案发表了评论 - 你的样本中有脚本注入,这不是一个好习惯。 –

+0

@AlexeiLevenkov那里你去哥们:)我已经更新了答案,有没有其他的错误? :) –