比如,我有一个页面 a.aspx 和它对应的cs文件 a.aspx.cs然后我在 a.aspx 页面里面放了一个web用户控件 b.ascx现在我想在a.aspx页面里向 b.ascx 传一个变量b.ascx.cs 里面程序是这样写的:
private int id1;
public int id
{
set
{
this.id1 = Convert.Toint32(value);
}
}
在 a.aspx 里面传值的程序是这样写的:
<uc1:b ID="B1" runat="server" id="<%= id2 %>" />
这里面的 id2 是在 a.aspx.cs 的类声明里面定义的
public partial class test_a : System.Web.UI.Page
{
public int id2;
但程序报错了,错误信息是:分析器错误信息: 无法从其“id”属性的字符串表示形式“<%= id2 %>”创建“System.Int32”类型的对象。我不知道这是什么原因,但是我传一个常量却没有问题,可以传进去。
<uc1:b ID="B1" runat="server" id="123" />请问一下这是什么回事呢?这个问题应该怎么解决啊?谢谢!
private int id1;
public int id
{
set
{
this.id1 = Convert.Toint32(value);
}
}
在 a.aspx 里面传值的程序是这样写的:
<uc1:b ID="B1" runat="server" id="<%= id2 %>" />
这里面的 id2 是在 a.aspx.cs 的类声明里面定义的
public partial class test_a : System.Web.UI.Page
{
public int id2;
但程序报错了,错误信息是:分析器错误信息: 无法从其“id”属性的字符串表示形式“<%= id2 %>”创建“System.Int32”类型的对象。我不知道这是什么原因,但是我传一个常量却没有问题,可以传进去。
<uc1:b ID="B1" runat="server" id="123" />请问一下这是什么回事呢?这个问题应该怎么解决啊?谢谢!
形如 <uc1:b ID="B1" runat="server" id="<%= id2 %>" /> 这样的给自定义属性赋值也是不合法, IDE只是认为你重复声明 ID 这个属性, 而且还认为你将 ID 写成小写的, 你说 <uc1:b ID="B1" runat="server" id="123" /> 就没事可能就是 IDE认为你写得不严格, 将ID写成id而已.另外, 你的代码不够严谨.
public int id
{
set
{
this.id1 = Convert.Toint32(value); // 本身你已给这个属性定义为int, 如果不是int 是不可能传递过来的, 你这个还来个转换, 显然是十分多余的.
}
}
1. 将自定义的属性改成另外一名, 如 TheID, theidd, theiddddd, theiddddddddddddddddddddddddddd都行, 就是不要id, ID, iD, Id.
2. 不要太省事而在HTML源里给自定义属性赋值, 如果想实现加载时给自定义属性赋值, 你可以在ASPX的page_load里写.okay?!
第一你的属性名称为啥非得是ID呢不要用ID了在实际控件中,用viewstate存储你的属性值,试试看能不能解决你的问题
------------------
你应该知道每个页面都有page_load事件吧, 默认新建的页面都有创建的.
protected page_load(object sender, eventargs e)
{
b1.propertyName = yourvalue;//b1是你的控件名,propertyName 是属性名, yourvalue 是你的值.
}