Iam是ASP.NET的新手。 PHP经验(meaby导致此问题)和Iam在将数据从代码隐藏传递到view-source时遇到小问题。
我在代码隐藏方面声明了字符串变量,例如:
...
public string mystring = "Scotty";
protected void Page_Load(object sender, EventArgs e)
{
...
所以现在我想在视图代码中使用它,但是当我把它放在尖括号(<%:或<%=)并将它放在head元素中时,我无法访问此值。另一方面,当我把它放在BODY元素时,一切都很好。 我失败的例子(简化):
<head runat="server">
<script language="javascript">
function beamMeUp()
{
alert(<%=mystring;%>);
}
</script>
</head>
<body>
<input type="button" onclick="javascript:beamMeUp" value="Warp6" />
</body>
有人可以向我解释为什么我不能在HEAD中使用它(&lt;%= mystring;%&gt;)但我可以在BODY中使用它吗? 最好的问候
答案 0 :(得分:5)
使用<%=
时不需要分号。把它想象成写作:
<% Response.Write(mystring); %>
您也希望将其包装在引号中。
alert("<%=mystring %>");
没有引号就是:alert(Scotty);
除非你有一个名为Scotty
的javascript变量,否则没有多大意义。
它应该会显示一个警告框,显示undefined
mystring
中提供了代码隐藏变量<head>
。 C#IntelliSense没有显示,因为它位于<script>
标记内。
答案 1 :(得分:0)
你的问题可能是你有
<head runat="server">...
我相信这会导致ASP .NET构造一个HtmlHead对象,您可以从Page.Head引用它。但是,您不能使用内联构造,例如&lt;%..%&gt;和&lt;%=%&gt;这样做的时候。我相信其他ASP .NET控件也是如此,例如
<asp:TreeView ...>
<asp:TreeViewItem> <%= will cause error! %> </asp:TreeViewItem
</asp:TreeView>
答案 2 :(得分:0)
你真的有三个问题:
1。)当他告诉你使用时,第一响应者指出你有一个javascript错误:
alert("<%=mystring %>");
2。)您遇到ASP .NET错误,因为您无法使用&lt;%=%&gt;在具有runat =“server”的标签内。
3.。)你的onclick作业中的另一个javascript错误。请注意,最好使用attachEvent和addEventListener在代码中连接事件。您的onclick作业不需要javascript:在前面。您可以为href属性执行此操作,但不能执行onclick。在onclick中,您已经在执行javascript。你可以onclick =“alert('哟!')”哪个会起作用。此外,在执行函数时,必须包括括号,因此您应该有onclick =“beamMeUp();” (半结肠可选)。
您修改后的代码应该更像:
<head> <!-- notice runat="server" has been removed -->
<script type="text/javascript">
function beamMeUp()
{
alert("<%=mystring;%>");
}
</script>
</head>
<body>
<input type="button" onclick="beamMeUp();" value="Warp6" />
</body>
注意:我尝试了上面的代码并且它有效。我做了这些改变