1

我想在 aspx 页面上输出这样的内容(不是代码隐藏):


<asp:text id="txt1" runat="server" value="<%# Fields.FirstName %>">

Fields.FirstName 是一个静态类。我该怎么做呢?我收到一条错误消息,提示“当前上下文中不存在名称‘字段’”。我错过了什么?我必须在 .aspx 页面上包含一些内容吗?

4

3 回答 3

2

你可以试试这个:

<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()在代码后面的某个地方调用。

另请参阅此问题以获取更多信息。

于 2012-08-16T23:41:53.580 回答
1

使用完整的类名(包括所有嵌套的命名空间)和 = 符号,您不是数据绑定(由 # 符号表示)。我经常这样做...

<%=Namespace.MyStrings.MyConstantString%>

此外,根据您的页面设置方式,您可能必须在响应写入括号中使用单引号......

<asp:TextBox ID="..." runat="server" Text='<%=Namespace.MyStrings.MyConstantString%>'></asp:TextBox>

更新:

超级hacky,但我让它工作......

<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>

在 <%= 语法不起作用后不得不自我救赎。

于 2012-08-16T23:35:37.197 回答
0

您需要在 aspx 页面上的代码或代码片段中执行此操作。不能嵌套 asp 标签 ( <%# %>) 不能嵌套在asp:text元素中。

于 2012-08-16T23:34:31.827 回答