<% 的每个含义的列表(<%#、<%= 等等...)

5 浏览
0 Comments

<% 的每个含义的列表(<%#、<%= 等等...)

你知道在你的.aspx页面中,通过简单地使用<%= PropertyFromCodeBehind %>,你可以将代码后台的属性值嵌入页面中吗?\n嗯,我最近才发现这一点,但似乎找不到任何能更深入解释这个(和相关内容)的教程(我只知道<%#与Eval一起使用) - 可能是因为我在使用<%进行搜索。\n所以,有人可以给我提供更详细的解释这些标签的说明,或者给一个解释所有这些内容的教程链接吗?我对任何可以学到关于这个主题的东西感兴趣;我在某个地方看到你可以做像<% for ... %>这样的花哨的东西。

0
0 Comments

在ASP.NET中,<%#,<%=,<%,<%:等标记是用来在页面中嵌入代码和动态内容的。然而,这些标记的具体用法和作用并不是很清楚,因此需要整理出它们的含义以及使用方法。

首先,<%#标记是用于数据绑定的。它可以将数据源中的值绑定到页面上的控件或标记中。要使用<%#标记,需要在绑定表达式中指定数据源和绑定字段。例如,<%# Eval("FieldName") %>会将数据源中的字段值绑定到页面上。

接下来是<%=标记,它用于将表达式的结果输出到页面上。它类似于Response.Write方法,可以将动态内容直接输出到页面。例如,<%= DateTime.Now %>会在页面上显示当前的日期和时间。

<%标记是用来嵌入代码块的。它可以在页面中执行一些逻辑操作,如循环、条件判断等。代码块中的代码会在页面加载时执行。例如,<% for (int i = 0; i < 10; i++) { %>会在页面加载时执行一个循环,循环10次。

<%:标记是ASP.NET 4中引入的新特性,用于将内容进行HTML编码,防止跨站脚本攻击。它类似于<%=标记,但会自动对输出内容进行HTML编码。例如,<%: "" %>会将输出内容进行HTML编码,防止脚本注入。

以上是<%#,<%=,<%,<%:等标记的含义和使用方法。通过使用这些标记,可以在ASP.NET页面中嵌入代码和动态内容,实现更灵活和动态的页面功能。

0
0 Comments

ASP.NET中有几种不同的语法:

- `<%$ %>` 表达式语法

- `<%# %>` 数据绑定语法

- `<% %>` 可执行的代码块

- `<%= %>` 语句和表达式

- `<%: %>` HTML编码输出

在ASP.NET 4中引入了HTML编码语法,与`<%= %>`相同,只是结果进行了HTML编码(对于非`IHtmlString`类型)。这种新的语法旨在替代`<%= %>`。

需要注意的是,新的语法只在表达式结果的类型不实现`IHtmlString`接口时进行编码。如果实现了该接口,则不进行任何编码。这就是MVC如何使用其HtmlHelper方法输出标记而不对值进行转义的方式。

对于以上内容的总结,可以得出以下结论:

- ASP.NET中有多种语法可以用于不同的目的。

- 新的HTML编码语法是为了更好地处理HTML编码的输出。

- 通过判断表达式结果的类型是否实现了`IHtmlString`接口来决定是否进行HTML编码。

- MVC中的HtmlHelper方法返回的是`HtmlString`类型而不是`string`类型,这样可以避免对值进行转义。

<a href="http://michielvoo.net/blog/expressions-vs-statements-part-2-asp-net-code-block-types/" rel="nofollow">这里</a>是一个好的起点。
有几种不同的语法:
  • [apcode]
    <%$ %>

    表达式语法

  • <%# %> 数据绑定语法
  • <% %> 可执行的代码块
  • <%= %> 语句和表达式

ASP.NET 4中新增了HTML编码语法 (haacked),与<%= %>相同,只是结果进行了HTML编码(对于非IHtmlString类型)。这种新的语法旨在替代<%= %>

  • <%: %> HTML编码输出

我今天学到了一些东西(<%: %>)。谢谢!

顺便说一句,新的语法只有在表达式结果的类型不实现IHtmlString接口时才进行编码。如果实现了该接口,则不进行任何编码。这是MVC使用其HtmlHelper方法输出标记而不对值进行转义的方式。

Ball - 好的补充。自从MVC2以来,所有的HtmlHelper方法都返回HtmlString而不是string。我会将这个添加到答案中。

[/apcode]

0