ASP.NET表达式生成器最有用的时候是什么时候?

7

我看到了一个使用表达式生成器并创建自己的自定义表达式生成器类的示例:

https://web.archive.org/web/20210513211719/http://aspnet.4guysfromrolla.com/articles/022509-1.aspx

然而,我没有看出使用这种方法的价值。它似乎并不比在代码后台程序设置值更容易。

据我所知,你只能用它们来设置属性。也许它们对于在某些控件上设置默认值会有用吧?

有人能够解释一下这个ASP.NET功能何时变得强大起来吗?


哇,7分钟没有回答!这对我来说是一个新纪录! - John B
好问题。我也想不出它们有多少有用的用途。Scott Mitchell为Session做了一个- http://www.4guysfromrolla.com/articles/022509-1.aspx,我想这可能会有用(虽然我自己从未使用过)。 - RichardOD
听起来这个功能的实际应用范围非常有限。但正如马丁所描述的那样,本地化似乎是其中之一。 - John B
4个回答

4
我们正在使用自定义表达式构建器来本地化我们的应用程序。例如,标记看起来像这样:
<asp:LinkButton Text="<%$ Str:SomeString %>" ... />

表达式生成器从资源文件中读取一个字符串 "SomeString"(考虑当前用户的语言偏好),并将其分配给 LinkButton 的 Text 属性。
这相当灵活:我们只需将资源文件复制到应用程序目录中即可添加语言。如果客户想要为该链接按钮设置不同的文本,他只需将自定义字符串添加到资源文件中,并在表达式生成器中更改字符串 ID(无需更改代码后台)。

我在考虑这个问题,但是那些不包含在ASP.NET控件属性中的文本怎么办? - John B
它只能与控件属性一起使用。但是您始终可以使用asp:literal控件来显示一些文本。 - M4N
马丁,这与使用内置的ResourceExpressionBuilder有何不同? - RichardOD
是的!但大多数本地化文本都是链接、标签或网格标题列。此外,即使您将一些纯文本放入 ASPX 页面中,在标记编译期间它也会被转换为文字控件。 - M4N
ResourceExpressionBuilder是否期望资源文件在Web应用程序项目中?例如,如果您将资源文件放在由Web和服务层访问的公共类库项目中,则需要使用自定义表达式生成器。 - Paul Rowland
显示剩余2条评论

1

当您需要表达式在页面生命周期的早期执行时,它非常有用。它会在参数需要而不是在页面生命周期的特定点执行。

同时,看看如何制作通用'代码'表达式构建器


1

如果你关心ViewState(你应该关心),那么自定义表达式非常方便。请参见真正理解ViewState


-1

将一些客户端JavaScript参数“动态化”是这个功能的一个很好的用途。

假设您在web.config文件中有一个设置,您希望将其传递到JavaScript标记中的客户端。您可以在代码后台处理OnRender事件并在那里操纵js,但那样会很丑陋。在ASPX中执行以下操作要好得多:

 <script type="text/javascript">
   var sessionKill = <%$ AppSettings:ClientSessionTimeOut%>

-1: 这段代码无法编译,表达式构建器只能用于服务器 Web 控件属性... (你可能想到的是 <%= %>) - Nikola Bogdanović

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接