当前位置:  开发笔记 > 编程语言 > 正文

ASP.net内联表达问题

如何解决《ASP.net内联表达问题》经验,为你挑选了2个好方法。

我似乎无法弄清楚为什么这不起作用.我需要将文本框绑定到内联表达式中的值.好像很简单吧?但这些都不奏效.有任何想法吗?提前致谢.



编辑:我应该提到这个页面后面没有代码,顶部只有以下指令.

<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Page Language="C#" %>

编辑:

我可以提出的唯一可行的解​​决方案是添加一个内联服务器脚本,就像这个一样.我希望我知道为什么内联表达式不起作用,除非你在数据绑定上下文中.


Martin.. 15

在Page_Load中你必须调用Page.DataBind()


上班.

<%=%>是一个缩短的response.Write(),对于任何服务器标记永远不会作为属性有效.

只有当数据库是数据绑定(在您的情况下为页面)时,才能使用<%#%>.

<%$%>可用于访问资源文件中的数据.

编辑:您还可以看一下如何在标记中"绑定"标签的Text属性, 这是一个相似的问题.



1> Martin..:

在Page_Load中你必须调用Page.DataBind()


上班.

<%=%>是一个缩短的response.Write(),对于任何服务器标记永远不会作为属性有效.

只有当数据库是数据绑定(在您的情况下为页面)时,才能使用<%#%>.

<%$%>可用于访问资源文件中的数据.

编辑:您还可以看一下如何在标记中"绑定"标签的Text属性, 这是一个相似的问题.



2> Sam..:

如上所述,<%=%>在服务器控件声明中的任何位置都是非法的,除非内部标记被解析为内容(例如,在Repeater中的).

<%#%>作为控件属性的表达式有效,因为在控件上调用DataBind()时将评估这些表达式.

你使用Eval()看起来有点怀疑.根据示例,Eval()将使用当前Page对象作为绑定上下文,这意味着在调用DataBind()时,将绑定名为"test"的公共属性的值.除非您实际在Page类上定义了此属性,否则表达式永远不会计算任何内容.

Eval()主要用于控件中的表达式,如Repeater,GridView,ListView等,其中有一个使用模板绑定的数据项列表,并且您需要一种方法来访问当前属性数据项.

对于所有其他控件,只需在数据绑定表达式中使用普通代码表达式 - 它比Eval()更快,更直观,它依赖于运行时反射.

如果你想要一个更聪明的替代方法,使用<%$%>语法完全避免数据绑定,请转到此处:

http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有