在全局命名空间中找不到类型或命名空间名称(您是否缺少程序集引用?)

时间:2017-02-11 03:49:15

标签: asp.net user-controls webusercontrol

我是ASP.NET的新手。所以我正在学习本教程http://asp.net-tutorials.com/user-controls/using/,并提出了一个问题。

作为演练,我在.ascx文件

上添加了标记
<%@ Control Language="C#" AutoEventWireup="true"  CodeFile="UserInfoBoxControl.ascx.cs" Inherits="UserInfoBoxControl" %>
<b>Information about <%= this.UserName  %></b>
<%= this.UserName %> is <%= this.UserAge %> years old and lives in <%= this.UserCountry %>
<My:UserInfoBoxControl runat="server" ID="MyUserInfoBoxControl" />

我已经在代码隐藏文件中声明了属性

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace VeryBasic
{
public partial class UserInfoBoxControl : System.Web.UI.UserControl
{
    private string userName;
    private int userAge;
    private string userCountry;

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public string UserName
    {
        get { return userName; }
        set { userName = value; }
    }

    public int UserAge
    {
        get { return userAge; }
        set { userAge = value; }
    }

    public string UserCountry
    {
        get { return userCountry; }
        set { userCountry = value; }
    }
}
}

然后,为了添加此用户控件,我创建了一个表单,并添加了如下代码。 (确保我将用户控件拖放到Web表单并进行了编辑。)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm.aspx.cs" Inherits="VeryBasic.WebForm" %>
<%@ Register Src="~/UserInfoBoxControl.ascx" TagPrefix="My" TagName="UserInfoBoxControl" %>
<My:UserInfoBoxControl runat="server" ID="MyUserInfoBoxControl" UserName="John Doe" UserAge="45" UserCountry="Australia" />

并且Web表单的代码隐藏在这里。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace VeryBasic
{
public partial class WebForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // These values can come from anywhere, but right now, we just hardcode them
        MyUserInfoBoxControl.UserName = "Jane Doe";
        MyUserInfoBoxControl.UserAge = 33;
        MyUserInfoBoxControl.UserCountry = "Germany";
    }
}
}

至于教程,我可以运行该项目。但在这里我收到了错误。

错误3类型或命名空间名称&#39; UserInfoBoxControl&#39;无法在全局命名空间中找到(您是否缺少程序集引用?)

我尽力解释我得到的错误。任何人都可以帮我解决这个问题吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试将名称空间名称从非常基本更改为&#39; userinfoboxcontrol&#39;

答案 1 :(得分:0)

代码中有2个错误。

  1. UserNameUserAge等属性不是静态的。因此,您必须创建MyUserInfoBoxControl的实例才能访问它们。

    MyUserInfoBoxControl obj = new MyUserInfoBoxControl(); obj.UserName = "Jane Doe";

  2. 我猜您可以右键点击MyUserInfoBoxControl,即表示错误并选择Resolve选项。使用resolve技巧来查找命名空间,因为很难记住哪个类在哪个命名空间中。