<a1:s1 z1=<% =for_z1 %> runat="server"/>可以的,你必须在后代吗设置为public类型的
在index.aspx中:<a1:s1 id="a1_id" runat="server"/>在index.aspx.cs中的Page_Load内:a1_id.z1=for_z1也可以,你必须指定类名字

解决方案 »

  1.   

    <%@ Control Language="c#" AutoEventWireup="false"
     Codebehind="SiteHeader.ascx.cs" classname="SiteHeader"
     classname="SiteHeader" Inherits="ASPNet_App.Controls.SiteHeader">
    classname要这个
    参考
    http://www.pardesiservices.com/softomatix/UserControls2.asp
      

  2.   

    好象你用了自定义控件。
    自定义控件在page_load中的用法:        Dim mycontrol As Control
            mycontrol = LoadControl("mycontrol.ascx")
            myplace.Controls.Add(mycontrol)直接用自定义控件的ID认不出。 要在html中放个<asp:PlaceHolder ID="myplace" Runat="server" />
      

  3.   

    偿用了自定义控件吧
    呵呵
    首先第一种用法严重错误,绑定符应该是<% #变量|表达式|函数%>被绑定的一定是一个返回单一结果的变量勤务者函数第二种用法也可以,但是,VS2003不会为自定义控件生成声明代码,因此,你应该在代码文件的类定义中加入对该控件的声明,如localhost.inc.Control1 MyControl,要注意的是该名称与控件ID要一致即可
      

  4.   

    在你的用户控件的代码里加上这个:
    public string StrValue;在使用这个用户控件的代码里:
    先声明你这个用户控件:protected 控件命名空间.类名称 mAscx;
    然后在需要的地方写:
    mAscx.StrValue = "aaa";
      

  5.   

    protected string for_z1="123";
      

  6.   

    错误的原因是你在控件里面使用了<%=%>语句,这个是不允许的就是微软自己的控件也不支持这种方式!但是你可以使用数据绑定的方式来实现这个功能。由于一般自定义控件和微软的控件都集成于同一个类所以我就直接使用一个Button说明这个问题:
    以这种方式给Text赋值:
    <asp:Button id="Button3" runat="server" Text="<%# xyz %>"></asp:Button>
    在服务器端则使用下面的方式取值,首先需要定义一个public的变量:
    public string xyz = "BUTTONXYZ";
    然后在Page_Load里面调用下面的方法:
    this.DataBind();
    就可以实现。服务器控件是不支持直接使用<%=%>赋值的,如果需要赋值你可以使用DataBind方法。祝好运!
      

  7.   

    <a1:s1 z1=<% =for_z1 %> 有问题,最好再后代码里进行赋值
      

  8.   

    编译器错误信息: CS0246: 找不到类型或命名空间名称“a1_id”(是否缺少 using 指令或程序集引用?)将变量放到类下面,但不要放到Page_Load内,且要定义为PUBLIC,则可调用