zoukankan      html  css  js  c++  java
  • [转载] asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别

    在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式:
    一.  <%%>
    这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscript或者javascript代码,而在asp.net中是.net平台下支持的语言。
    特别注意:服务器控件中不能有<%%>语法
    (这里用C#代码)
      <%
            int a = 2;
            int b = 3;
            int c = a + b;
            Response.Write(c);
        %>二. <%#%>
    如果是这种格式的话那就是asp.net下特有的,它是控件数据绑定的语法,且必须要调用该控件的DataBind()方法才执行(或者整个页面Page.DataBind()也就是对所得控件都调用DataBind()方法,在这种情况下不管是服务器控件还是客户端控件都会绑定)
    特别注意:只有服务器控件才能用<%#%>语法(不准确的)
    当整个页面调用this.DataBinder()方法时,不管是服务器控件还是客户端控件都会绑定
    <div>
    Server Control:<asp:TextBox ID="TextBox1" runat="server" Text="<%#text%>"></asp:TextBox><br /><!--Server Control-->
    Client Control:<input type="text" id="textbox2" value="<%#text%>" /><!--Client Control-->
     </div>aspx.cs代码如下:   protected string text;//注意这里必须申明为public或protected,否则aspx页面(子类)无法访问
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    this.text = "aaaaaaaaaaaaa";
                    this.TextBox1.DataBind();//或this.DataBind();              
                }
            }
    当this.TextBox1.DataBind()  运行显示出来的效果(无法插入图片自己测试)
    this.DataBind() 运行显示出来的效果(无法插入图片自己测试)
    三.  <%=%>
    这种形式实际上是由<%%>扩展而来的.等价于:Response.Write(<%%>)这种形式(不标准,但能看明白),它其实也可以看成是一种绑定.
    aspx代码:   <label id="label1"><%=DisplayStr()%></label><br />
      <label id="label2" runat="server"><%=DisplayStr()%></label>aspx.cs代码:  public string  DisplayStr()//注意这里必须要有返回值,否则将会发生运行时错误
            {
                return "bbbb";
            }
    四.<%$%>
    这种形式主要用于对web.config文件的键值对进行绑定:通常用于连接数据库的字符串
    特别注意:1.绑定的只能是服务器控件 
             2.只能绑定到服务器控件的某个属性上。
     <asp:TextBox runat="server" ID="cc" Text="<%$ConnectionStrings:pubs%>"></asp:TextBox>web.config文件如下:  <connectionStrings>
        <add name="pubs" connectionString="Server=.;database=pubs;uid=sa;pwd=" providerName="System.Data.SqlClient"/>
      </connectionStrings>这样就能正常运行。
    如果修改aspx中的文件:使用客户端的控件  <input type="text" value="<%$ConnectionStrings:pubs%>"/>或者:不绑定到服务器控件的某个属性上 <asp:TextBox runat="server" ID="cc"><%$ConnectionStrings:pubs%></asp:TextBox>
    运行都会出现相同的错误
    最后注意一点: 
    <%#%>只针对的是服务器控件的数据绑定,因此不能同<%=%>和<%%>混合使用
    补充:
    针对:<%=%>形式:
    另外一种情况:
    aspx代码:           <input type="text" id="a"  value=<%=DisplayStr()%> />
              <input id="Text1" type="text"  runat="server" value=<%=DisplayStr()%> />aspx.cs代码:
     public string  DisplayStr()//注意这里必须要有返回值,否则将会发生运行时错误
            {
                return "bbbb";
            }如果是这样的情况的话,就出现运行时错误。最后对这种<%=%>用法强调一句:尽量对客户端控件用这种形式,毕竟它是asp常用语法,不会出现问题。
    但是对于asp.net的服务器控件就可能不能完全适合的。
  • 相关阅读:
    ExtJS小技巧
    Oracle 表的行数、表占用空间大小,列的非空行数、列占用空间大小 查询
    NPM 私服
    IDEA 不编译java以外的文件
    SQL 引号中的问号在PrepareStatement 中不被看作是占位符
    Chrome 浏览器自动填表呈现淡黄色解决
    批量删除Maven 仓库未下载成功.lastupdate 的文件
    Oracle 11g 监听很慢,由于监听日志文件太大引起的问题(Windows 下)
    Hibernate 自动更新表出错 建表或添加列,提示标识符无效
    Hibernate 自动更新表出错 More than one table found in namespace
  • 原文地址:https://www.cnblogs.com/AaronBear/p/6090449.html
Copyright © 2011-2022 走看看