我想在aspx页面上输出这样的东西(不是代码隐藏):
<asp:text id="txt1" runat="server" value="<%# Fields.FirstName %>">
其中 Fields.FirstName 是一个静态类。我该怎么做?我收到一条错误消息,指出"当前上下文中不存在名称'字段'"。我错过了什么?我必须在.aspx页面上包含某些内容吗?
你可以试试这个:
<input type="text" value="<%=Fields.FirstName %>" id="txt1" />
但是,请记住,它不再是服务器控件。
可以在服务器控件中使用 <%# Fields.FirstName %> 表示法,但只有在从代码隐藏调用 DataBind 时才会填充它们。在外部范围内使用单引号是很习惯的,因为在内部范围内经常需要双引号,如下所示:
<input type="text" value='<%=Fields["FirstName"] %>' id="txt1" />
但是,如果不需要引号,它也应该像您描述的那样工作:
<asp:text id="txt1" runat="server" value="<%# Fields.FirstName %>">
只要你在代码后面的某个地方调用txt1.DataBind()
。
另请参阅此问题以获取更多信息。
使用完整的类名(包括所有嵌套的命名空间)和 = 符号,您不是数据绑定(用 # 符号表示)。 我经常这样做...
<%=Namespace.MyStrings.MyConstantString%>
此外,根据页面的设置方式,您可能必须在响应写括号中使用单引号。
<asp:TextBox ID="..." runat="server" Text='<%=Namespace.MyStrings.MyConstantString%>'></asp:TextBox>
更新:
超级笨拙,但我让它工作了...
<supr:SuprTextBox ID="txt" runat="server" ClientIDMode="Static"></supr:SuprTextBox>
<div id="preload" style="display:none;"><%=Supr.Strings.ASSET_CONTROL_LOCATION%></div>
<script type="text/javascript">
$(function () {
$('#txt').val($('#preload').html());
});
</script>
在 <%= 语法不起作用后不得不赎回自己。
您需要在 aspx 页上的代码隐藏或代码段中执行此操作。不能嵌套 asp 标记 ( <%# %>
) 不能嵌套在 asp:text
元素中。