问题描述
我创建了一个带有 runat="server" 标记的元素,但在后面的代码中无法识别我。(“时间”无法识别)
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="game.aspx.cs" Inherits="RapidTyper.game" %>
<!DOCTYPE html>
<div runat="server">
<a runat="server" id="time"></a>
</div>
<asp:Button ID="UpdateResults" runat="server" ClientIDMode="Static" style="display:none;" OnClick="Button1_Click" Text="" />
背后的代码
protected void Button1_Click(object sender,EventArgs e)
{
int score = time.Text;
}
解决方法
元素 <a runat="server" id="time"></a>
不是一个 asp.net 元素,而是一个没有 Text
属性的 Html element。
您可以使用呈现 <asp:LinkButton runat="server" ID="time2"></asp:LinkButton>
标记并具有 Text 属性的 LinkButton <a>
。
- 此外,
<a>
标签不是输入元素,也不会回发任何内容 - 因此score = time.Text
不会得到除您之前已准备好的任何内容之外的任何内容。
Aristos 写的是正确的,但你的问题比这更深。为了使用像 <asp:Button />
这样的元素,您需要将它们放在一个表单中,而表单又需要在一个 <body>
中。至少你需要这样的东西:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="eShop.test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox runat="server" id="time" />
</div>
<asp:Button ID="UpdateResults" runat="server" OnClick="UpdateResults_Click" />
</form>
</body>
</html>
请注意,我假设您还需要 <asp:TextBox>
之类的东西。我认为这应该是某种用户输入?最后,您将无法简单地执行 int score = time.Text
,因为 Text 是一个字符串。至少您需要 int score = int.Parse(time.Text)
但这只会在框包含实际整数的情况下起作用。其他任何事情都会引发错误。相反,您应该查看 int.TryParse