这个问题我看到已经有很多人提过了,但是跟我提出的还是有一定区别的,我的文件如下:
aa.aspx文件,是主文件--------------------------------------
<%@ Page Language="C#"%>
<%@ Register TagPrefix="Consecution" TagName="Address" Src="Consecution_Address.ascx" %>
<script language="JavaScript" src="/js/GetSon.js"></script>
<script runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
UserControl uc = (UserControl)LoadControl("Consecution_Address.ascx");
((User_Address)uc).necessarily = "true";
((User_Address)uc).msg = "如果列表里没有您能选择的地区,请选其它的其它";
xx.Controls.Add(uc);
}
</script>
<html>
<body >
<form runat="server">
<b>利用程序代码来创建用户控件</b>
<br>
<asp:PlaceHolder id="xx" runat="server"/><br>
<asp:label id="bb" runat="server"/>
</form>
</body>
</html>
--------------------------------------------------
Consecution_Address.ascx文件,是自定义的控件----------
<%@ Control ClassName="User_Address" Language="C#" Src="Consecution_Address.cs" Inherits="Consecution.Consecution_Address"%>
<select id="Address" runat="server" onchange="GetSon('Address',this.value)"/> <span id="Address_Son_Span"></span> <asp:label id="L_necessarily" runat="server"/>
<asp:requiredfieldvalidator
ControlToValidate="Address" runat="server"
Display="Dynamic"
ErrorMessage="请选择地区 "
Font-Bold="true"
/><asp:label id="L_msg" runat="server"/>
---------------------------------------------------------
Consecution_Address.cs文件,是自定义控件的处理文件--------
namespace Consecution
{
using System;
using System.Data;
using System.Collections;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using WebConn;
public class Consecution_Address : UserControl
{
protected HtmlSelect Address;
protected Label L_necessarily,L_msg;
protected string _necessarily,_msg;
Conn Conn = new Conn();
public string necessarily
{
get {return _necessarily;}
set {_necessarily = value;}
}
public string msg
{
get {return _msg;}
set {_msg = value;}
}
public void Page_Load(object src,EventArgs e)
{
Conn.ReturnTableView("select id,fid,name from Address where fid=0");
Address.Items.Clear();
Address.DataSource = Conn.dv;
Address.DataTextField = "name";
Address.DataValueField = "id";
Address.DataBind();
Address.Items.Insert(0,new ListItem("--请选择--",""));
if (necessarily == "true") L_necessarily.Text = "<span style=\"color:red\">*</span>";
L_msg.Text = msg;
}
}
}
------------------------------------------------------
这个控件的功能是读取一个连动菜单,采用了发送xml的方法来实现的,这个且不管它.
现在这样,运行aa.aspx文件,是可以正确运行的,但是aa.aspx文件没有做到代码与页面分离,现在我要做分离,因此另写了一个aa.cs文件,把Page_Load事件里的全部代码写到了aa.cs里,但是这样就出错了,无论如何都会报找不到控件的命名空间错误,哪个大侠能帮忙解决一下这个问题?或者帮我写一个能正确使用的cs文件也好.
还有一点需要说明的是,我是用记事本来写这些文件的,没有用到vs.net,是否也可以实现上述功能?
aa.aspx文件,是主文件--------------------------------------
<%@ Page Language="C#"%>
<%@ Register TagPrefix="Consecution" TagName="Address" Src="Consecution_Address.ascx" %>
<script language="JavaScript" src="/js/GetSon.js"></script>
<script runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
UserControl uc = (UserControl)LoadControl("Consecution_Address.ascx");
((User_Address)uc).necessarily = "true";
((User_Address)uc).msg = "如果列表里没有您能选择的地区,请选其它的其它";
xx.Controls.Add(uc);
}
</script>
<html>
<body >
<form runat="server">
<b>利用程序代码来创建用户控件</b>
<br>
<asp:PlaceHolder id="xx" runat="server"/><br>
<asp:label id="bb" runat="server"/>
</form>
</body>
</html>
--------------------------------------------------
Consecution_Address.ascx文件,是自定义的控件----------
<%@ Control ClassName="User_Address" Language="C#" Src="Consecution_Address.cs" Inherits="Consecution.Consecution_Address"%>
<select id="Address" runat="server" onchange="GetSon('Address',this.value)"/> <span id="Address_Son_Span"></span> <asp:label id="L_necessarily" runat="server"/>
<asp:requiredfieldvalidator
ControlToValidate="Address" runat="server"
Display="Dynamic"
ErrorMessage="请选择地区 "
Font-Bold="true"
/><asp:label id="L_msg" runat="server"/>
---------------------------------------------------------
Consecution_Address.cs文件,是自定义控件的处理文件--------
namespace Consecution
{
using System;
using System.Data;
using System.Collections;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using WebConn;
public class Consecution_Address : UserControl
{
protected HtmlSelect Address;
protected Label L_necessarily,L_msg;
protected string _necessarily,_msg;
Conn Conn = new Conn();
public string necessarily
{
get {return _necessarily;}
set {_necessarily = value;}
}
public string msg
{
get {return _msg;}
set {_msg = value;}
}
public void Page_Load(object src,EventArgs e)
{
Conn.ReturnTableView("select id,fid,name from Address where fid=0");
Address.Items.Clear();
Address.DataSource = Conn.dv;
Address.DataTextField = "name";
Address.DataValueField = "id";
Address.DataBind();
Address.Items.Insert(0,new ListItem("--请选择--",""));
if (necessarily == "true") L_necessarily.Text = "<span style=\"color:red\">*</span>";
L_msg.Text = msg;
}
}
}
------------------------------------------------------
这个控件的功能是读取一个连动菜单,采用了发送xml的方法来实现的,这个且不管它.
现在这样,运行aa.aspx文件,是可以正确运行的,但是aa.aspx文件没有做到代码与页面分离,现在我要做分离,因此另写了一个aa.cs文件,把Page_Load事件里的全部代码写到了aa.cs里,但是这样就出错了,无论如何都会报找不到控件的命名空间错误,哪个大侠能帮忙解决一下这个问题?或者帮我写一个能正确使用的cs文件也好.
还有一点需要说明的是,我是用记事本来写这些文件的,没有用到vs.net,是否也可以实现上述功能?
解决方案 »
- 昨天安装了个VS2010中文旗舰版,安装完后Windows的字体变得很不清晰!怎么解决啊!
- 如何取出MatchCollection中的值???请大侠们给小弟看看。在线等
- 请教个问题 看怎么获得这里的值呢??
- 紧急求助,各位帮帮忙!
- [急]ICSharpCode.SharpZipLib压缩的一个问题
- 关于datarow数字格式化问题。将1234格式化为1,234
- 从DataSet或DataTable继承的类无法序列化
- 高手救命:.net框架从1.0升级到1.1后 读取Excle出问题!
- 求救(随机数)
- 【菜鸟问题】c#中如何打开word文档
- 从DataTable进去到HashTable 出来
- 【2000分】【在线等待】【急急急】如何获取方法体的字节码?
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System;
using System.Collections;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Reflection;
using Consecution;public class aa : Page
{
protected PlaceHolder xx;
protected Label bb;
protected Consecution.Consecution_Address User_Address;
public void Page_Load(Object src , EventArgs e)
{
//调用UserControl2用户控件
UserControl uc = (UserControl)LoadControl("Consecution_Address.ascx");
bb.Text = uc.GetType().ToString();
//设置用户控件的属性
((User_Address)uc).necessarily = "true";
((User_Address)uc).msg = "如果列表里没有您能选择的地区,请选其它的其它";
xx.Controls.Add(uc);
}
}
using Consecution;这句出错,说是找不到类型或命名空间名称“Consecution”(是否缺少 using 指令或程序集引用?)
dll引用路径不对
dll引用路径不对我没有编译过dll呀,只是引用了ascx
你的 aa 类的名称空间是什么?
Consecution
using System.Collections;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Reflection;
using Consecution;namespace Consecution
{
public class aa : Page
{
...
}
}//这样写没有理由出错啊!
你可以试试,会报无法找到命名空间的错误的.
UserControl uc = (UserControl)LoadControl("Consecution_Address.ascx");
bb.Text = uc.GetType().ToString();
//设置用户控件的属性
((User_Address)uc).necessarily = "true";
((User_Address)uc).msg = "如果列表里没有您能选择的地区,请选其它的其它";
xx.Controls.Add(uc);报同样的错误,但该为//调用UserControl2用户控件
Consecution_Address uc = (Consecution_Address)LoadControl("Consecution_Address.ascx");
bb.Text = uc.GetType().ToString();
//设置用户控件的属性
uc.necessarily = "true";
uc.msg = "如果列表里没有您能选择的地区,请选其它的其它";
xx.Controls.Add(uc);就成功了。我是在vs.net的环境里做的。个人意见,仅供参考。