ASP.NET 标记如何访问代码隐藏中的变量?
ASP.NET how does markup access to variables in code-behind?
我有一个带有按钮的网络表单:
<asp:Button ID="btn1" runat="server" text="Click me"
OnClientClick="printVideos(new Object(),new EventArgs(),url,linkName)"/>
并且 OnClientClick
事件是
<script language= "c#" type="text/C#" runat= "server">
private void printVideos(Object sender, EventArgs e, string url, string linkName) {
for (int i = 0; i < 4; i++) {
Response.Write("<a href='"+url+"'target_blank>'"+linkName+"</a>");
}
}
</script>
其中 url
和 linkName
在 C# 代码隐藏中定义为 class 中的私有 string
。
按钮不起作用,并且有警告显示url
和linkName
没有被使用。我应该怎么做才能让标记访问代码隐藏变量?
您的第一个问题是您正在尝试 运行 客户端上的服务器端代码 - 将 OnClientClick
更改为 OnClick
。
接下来,您需要设置 linkName
和 url
属性的保护级别,以便您的 ASPX 标记可以访问它们。您可以将其设置为 public
或 protected
(source)。最后,从 printVideos
方法中删除额外的参数 - OnClick
处理程序需要一个特定的方法签名。因此,您的按钮标记应如下所示:
<asp:Button ID="btn1" runat="server" text="Click me" OnClick="printVideos"/>
还有你的脚本...
<script language= "c#" type="text/C#" runat= "server">
private void printVideos(Object sender, EventArgs e) {
for (int i = 0; i < 4; i++) {
Response.Write("<a href='"+url+"'target_blank>'"+linkName+"</a>");
}
}
</script>
并在页面的代码隐藏中声明变量:
protected string url = "...";
protected string linkName = "...";
我有一个带有按钮的网络表单:
<asp:Button ID="btn1" runat="server" text="Click me"
OnClientClick="printVideos(new Object(),new EventArgs(),url,linkName)"/>
并且 OnClientClick
事件是
<script language= "c#" type="text/C#" runat= "server">
private void printVideos(Object sender, EventArgs e, string url, string linkName) {
for (int i = 0; i < 4; i++) {
Response.Write("<a href='"+url+"'target_blank>'"+linkName+"</a>");
}
}
</script>
其中 url
和 linkName
在 C# 代码隐藏中定义为 class 中的私有 string
。
按钮不起作用,并且有警告显示url
和linkName
没有被使用。我应该怎么做才能让标记访问代码隐藏变量?
您的第一个问题是您正在尝试 运行 客户端上的服务器端代码 - 将 OnClientClick
更改为 OnClick
。
接下来,您需要设置 linkName
和 url
属性的保护级别,以便您的 ASPX 标记可以访问它们。您可以将其设置为 public
或 protected
(source)。最后,从 printVideos
方法中删除额外的参数 - OnClick
处理程序需要一个特定的方法签名。因此,您的按钮标记应如下所示:
<asp:Button ID="btn1" runat="server" text="Click me" OnClick="printVideos"/>
还有你的脚本...
<script language= "c#" type="text/C#" runat= "server">
private void printVideos(Object sender, EventArgs e) {
for (int i = 0; i < 4; i++) {
Response.Write("<a href='"+url+"'target_blank>'"+linkName+"</a>");
}
}
</script>
并在页面的代码隐藏中声明变量:
protected string url = "...";
protected string linkName = "...";