页头元素中的角度括号

时间:2011-03-01 20:07:29

标签: c# javascript asp.net html

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中使用它吗? 最好的问候

3 个答案:

答案 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>

http://geekswithblogs.net/mnf/archive/2007/11/14/code-render-blocks-not-always-work-inside-server-controls.aspx

答案 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>

注意:我尝试了上面的代码并且它有效。我做了这些改变

  • 从&lt; head&gt;中删除了runat =“server”标签
  • 添加双引号以提醒(“&lt;%= mystring;%&gt;”);
  • 将onclick事件更改为onclick =“beamMeUp();”不是onclick =“javascript:beamMeUp”。
祝你好运。