我是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;无法在全局命名空间中找到(您是否缺少程序集引用?)
我尽力解释我得到的错误。任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
尝试将名称空间名称从非常基本更改为&#39; userinfoboxcontrol&#39;
答案 1 :(得分:0)
代码中有2个错误。
UserName
,UserAge
等属性不是静态的。因此,您必须创建MyUserInfoBoxControl
的实例才能访问它们。
MyUserInfoBoxControl obj = new MyUserInfoBoxControl();
obj.UserName = "Jane Doe";
我猜您可以右键点击MyUserInfoBoxControl
,即表示错误并选择Resolve
选项。使用resolve技巧来查找命名空间,因为很难记住哪个类在哪个命名空间中。