<%=和<%#?之间的差异?

时间:2014-05-08 09:10:38

标签: asp.net .net

我有以下代码:

<div id='mymodal' class="modal hide fade <%# CssClass %>">
    <div class="modal-header">
        <asp:HyperLink ID="closePopup" NavigateUrl='<%# CloseLink %>' CssClass="close" runat="server" >&times;</asp:HyperLink>
        <h3>
            <asp:Literal ID="header" Text='<%# Header %>' runat="server" />
        </h3>
    </div>
    <div class="modal-body">
        <asp:Literal ID="body" Text='<%# Body %>'  runat="server" />
    </div>
</div>

第一个CssClass绑定使用&lt;%#或&lt;%=,而其他只能使用&lt;%#+ codebehind DataBind()(如果我使用&lt;%=,那么两个Literals显示字面意思是“&lt;%= Body%&gt;”文字)。

这两种方法有什么用?为什么这样工作?哪一个优于另一个?

3 个答案:

答案 0 :(得分:2)

  

&lt;%=是Response.Write()

的意思      

&lt;%#用于数据绑定

来自

Can you tell the differences between <%= %>, <%# %> and <%$ %> ASP.NET expressions?

我跳这个链接对你很有帮助......

答案 1 :(得分:1)

根据Dan Crevier的建议

http://blogs.msdn.com/b/dancre/archive/2007/02/13/the-difference-between-lt-and-lt-in-asp-net.aspx

  

文字表达式归结为浏览器而且它只是   HTML无效。你可以看到的结果是:

     

•&lt;%=表达式在渲染时评估

     

•&lt;%#表达式在DataBind()时评估,而不是   如果没有调用DataBind(),则完全评估。

     

•&lt;%#表达式可用作服务器端控件中的属性。   &lt;%=表达式不能。

简而言之<%= %> is equivalent of Response.Write();

<%# %>  is used for data-binding expressions.

答案 2 :(得分:0)

<% %>用于将服务器端代码包含在Render()方法

<%# %>用于数据绑定表达式

了解更多分隔符:

ASP.NET "special" tags