0

我遇到了这个错误:

找不到类型或命名空间名称“WebControls”(您是否缺少 using 指令或程序集引用?)

源错误:

Line 28:  Login Login1 = (WebControls.Login)LoginView1.FindControl("Login1"); // here the error code
Line 29:  TextBox UserName = (TextBox)Login1.FindControl("UserName");
Line 30:  TextBox FailureText = (TextBox)Login1.FindControl("FailureText");

我做了一些研究,解决方案是将其添加到源代码中:

System.Web.UI.WebControls.Login

但我不知道这段代码可以添加到哪里。起初我尝试将它作为命名空间,但它是错误的。谁能告诉我应该把这段代码放在哪里??

编辑

  protected void Login1_LoginError(object sender, System.EventArgs e)
{
    //Login Login1 = (WebControls.Login).LoginView1.FindControl("Login1");


    Login Login1 = (System.Web.UI.WebControls.Login)LoginView1.FindControl("Login1");
        TextBox UserName = (TextBox)Login1.FindControl("UserName");
        TextBox FailureText = (TextBox)Login1.FindControl("FailureText");

    //There was a problem logging in the user
    //See if this user exists in the database

    MembershipUser userInfo = Membership.GetUser(UserName.Text);
    if (userInfo == null)
    {
        //The user entered an invalid username...

        FailureText.Text = "There is no user in the database with the username " + UserName.Text;
    }
    else
    {
        //See if the user is locked out or not approved
        if (!userInfo.IsApproved)
        {
            FailureText.Text = "When you created your account you were sent an email with steps to verify your account. You must follow these steps before you can log into the site.";
        }
        else if (userInfo.IsLockedOut)
        {
            FailureText.Text = "Your account has been locked out because of a maximum number of incorrect login attempts. You will NOT be able to login until you contact a site administrator and have your account unlocked.";
        }
        else
        {
            //The password was incorrect (don't show anything, the Login control already describes the problem)
            FailureText.Text = string.Empty;
        }
    }
}
4

4 回答 4

1

您可能想要添加

using System.Web.UI.WebControls;

在文件的顶部。

于 2012-06-25T14:36:22.100 回答
1

再次更新

最初,保留与您发布的代码相同的代码 - 然后将这两个using语句添加到您的代码所在的 .cs 文件的顶部:

using System.Web.UI;
using System.Web.UI.WebControls;

我认为代码在这里混合了它对命名空间的使用 - 如果执行上述工作,我会考虑摆脱所有WebControls.[class]类型名称,[class]因为第二次使用消除了使用WebControls子命名空间的需要明确地。在单个代码文件中以两种不同的方式引用同一类型通常是不好的形式。

您的项目中也可能有另一种类型,Login它位于另一个命名空间的范围内。如果是这种情况,您将需要为您在第 28 行声明的变量使用完全限定名称。

于 2012-06-25T14:37:01.463 回答
0

您需要指定类的全名,包括所有命名空间和类名本身:

(System.Web.UI.WebControls.LoginView)LoginView1.FindControl("Login1"); // LoginView sic!

或将命名空间添加到 using 块:

using System.Web.UI.WebControls;
...
(LoginView)LoginView1.FindControl("Login1");;
于 2012-06-25T14:36:05.667 回答
0

正如其他人指出的那样,您需要添加:

使用 System.Web.UI.WebControls;

在文件的顶部。

我唯一可以补充的是,如果您遇到类似的错误(毕竟识别要使用的类相对容易,但有时很难识别要使用的命名空间)。

于 2012-09-11T11:18:26.157 回答