aspx:
<uc1:Pager  ID="Pager1" runat="server"  />aspx.cs:
    protected void Page_Load(object sender, EventArgs e)
    {        UserControl uc = (UserControl)(Page.FindControl("Pager1"));
        uc.VVV = "!!!!!!!!!!!";    }控件的ascx.cs
    private string _v;
    public string VVV
    {
        get
        {
            return _v;
        }
        set
        {
            _v = value;
        }
    }
执行页面后提示:
错误 1 “System.Web.UI.UserControl”不包含“VVV”的定义,并且找不到可接受类型为“System.Web.UI.UserControl”的第一个参数的扩展方法“VVV”(是否缺少 using 指令或程序集引用?)
但是<uc1:Pager VVV="123" ID="Pager1" runat="server"  />这样写却能接收到参数

解决方案 »

  1.   

    用地址栏。Request.QueryString
      

  2.   

    Pager  uc  = (Pager)(Page.FindControl("Pager1")); //用自己的名字转,不要用基类转
    uc.VVV="1111111";
      

  3.   

    写一个自定义的接口
    将用户控件强制转换到该接口就行了
    我试了一下,是可以的。
    其实以前我写过一篇文章
    就是专门解决这类问题的 http://bbs.blueidea.com/thread-2775108-1-1.html以下是我的测试代码:
    APP_Code/ucInterface.cs/* APP_Code/ucInterface.cs */
    /// <summary>
    /// Summary description for ucInterface
    /// </summary>
    public interface ucInterface
    {
        int id
        {
            get;
            set;
        }
    }WebUserControl.ascx<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    <asp:Label ID="Label1" runat="server" Text='<%# id %>'></asp:Label>WebUserControl.ascx.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    public partial class WebUserControl : System.Web.UI.UserControl, ucInterface
    {
        private int _id = 2;//有一个初始值2.
        protected void Page_Load(object sender, EventArgs e)
        {
            Label1.DataBind();
        }
        public int id
        {
            get { return ViewState["__id"] == null ? this._id : (int)ViewState["__id"]; }
            set
            {
                this._id = value;
                ViewState["__id"] = value;
            }
        }
    }default.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div id="div1" runat="server" />
            
        </form>
    </body>
    </html>default.aspx.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Control c = Page.LoadControl("WebUserControl.ascx");
                c.ID = "uc1";
                div1.Controls.Add(c);
            }
            ucInterface uc1 = Page.FindControl("uc1") as ucInterface;//转化到app_code中的 ucInterface 接口
            uc1.id = 234324324;//OK, 重新设置id的值(它的初始值我乱写的,是2)
            //Page.DataBind();//不用再调用数据绑定也行。页面是显示:234324324而不是2,注释掉上面一句页面就会显示2了。说明我们成功的使用了usercontrol的中属性。
        }
    }
      

  4.   

    直接Pager1.VVV=“...”,不转不行啊?
      

  5.   

    直接Pager1.VVV=“...”和2楼的方法都可行至于为什么2楼的不行,请帖出错误