#c# #asp.net #code-behind
#c# #asp.net #скрытый код
Вопрос:
Я создал элемент с тегом 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;
}
Ответ №1:
элемент <a runat="server" id="time"></a>
не является asp.net элемент, но Html-элемент, у которого нет Text
свойства.
Вы можете использовать LinkButton <asp:LinkButton runat="server" ID="time2"></asp:LinkButton>
, который отображает <a>
тег и имеет свойство Text.
- кроме
<a>
того, тег не является элементом ввода и ничего не отправляет обратно, поэтомуscore = time.Text
он не получит ничего, кроме того, что у вас было готово ранее.
Ответ №2:
То, что написал 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
, поскольку текст представляет собой строку. По крайней мере, вам нужно int score = int.Parse(time.Text)
, но это будет работать только в том случае, если поле содержит фактическое целое число. Все остальное выдаст ошибку. Вместо этого вы должны посмотреть на int.TryParse