【问题标题】:Runat="server" does not exist in the current contextRunat="server" 在当前上下文中不存在
【发布时间】:2016-10-13 15:16:24
【问题描述】:

我有一个HiddenField1,当我运行 C# 代码时它似乎不存在。

错误显示:

当前上下文中不存在名称“HiddenField1”。

第 54 行的 HiddenField1

抱歉,我不知道为什么 C# 代码出现在网站上。

public partial class Login : System.Web.UI.Page
{
    protected void LoginButton_Click1(object sender, EventArgs e)
    {
        string userName1 = Login1.UserName;
        string userPassword1 = Login1.Password;
        bool logSuccess = false;

        foreach (GridViewRow gvRow in GridView1.Rows)
        {

            if (userName1 == gvRow.Cells[1].Text && userPassword1 == gvRow.Cells[2].Text)
            {
                Response.Write("Logged in");
                logSuccess = true;
                break;
            }
        }
        if (logSuccess == true)
        { Response.Redirect("~/MemberPages/Members.aspx"); }
        else
        { HiddenField1.Value = ""; }
    }
}

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    <style type="text/css">
        .auto-style4 {
            width: 158px;
        }
        .auto-style5 {
            height: 28px;
        }
        .auto-style6 {
            width: 158px;
            height: 28px;
        }
    </style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <h2>Login</h2>
    <p>
        <asp:Login ID="Login1" runat="server" Height="135px" Width="252px" OnAuthenticate="Login1_Authenticate">
            <LayoutTemplate>
                <table cellpadding="1" cellspacing="0" style="border-collapse:collapse;">
                    <tr>
                        <td>
                            <table cellpadding="0" style="height:135px;width:252px;">
                                <tr>
                                    <td align="center" colspan="2">Log In</td>
                                </tr>
                                <tr>
                                    <td align="right" class="auto-style5">
                                        <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Email:</asp:Label>
                                    </td>
                                    <td class="auto-style6">
                                        <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
                                        <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="Login1">*</asp:RequiredFieldValidator>
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right">
                                        <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
                                    </td>
                                    <td class="auto-style4">
                                        <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox>
                                        <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="Login1">*</asp:RequiredFieldValidator>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2">
                                        <asp:CheckBox ID="RememberMe" runat="server" Text="Remember me next time." />
                                    </td>
                                </tr>
                                <tr>
                                    <td align="center" colspan="2" style="color:Red" >
                                       <asp:HiddenField ID="HiddenField1" Value="Invalid user email or password." runat="server"  />
                                       </td>
                                </tr>
                                <tr>
                                    <td align="right" colspan="2">
                                        <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="Login1" OnClick="LoginButton_Click1" />
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
            </LayoutTemplate>
        </asp:Login>
</p>
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" 
        Group="Login1" />

<p>
    &nbsp;</p>
</asp:Content>

【问题讨论】:

    标签: c# asp.net webforms


    【解决方案1】:

    因为您的HiddenField 控件位于LayoutTemplate 内,您需要使用FindControl 方法来找到它:

    ((HiddenField)Login1.FindControl("HiddenField1")).Value = "";
    

    【讨论】:

    • 是的,解决了这个问题。只是我的代码不是我想的那样。
    • 我可以让 HiddenField 显示文本吗?它会在 Value 内吗?
    • 我把它改成了一个文本,它与代码一起工作。非常感谢!
    猜你喜欢
    • 2023-03-30
    • 2020-03-10
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多