aspx элемент не распознается в коде за (asp.net )

#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