<asp:TextBox ID="tbName" CssClass="formField" MaxLength="<%=Constants.MaxCharacterLengthOfGameName %>" runat="server"></asp:TextBox>
上面的代码不起作用。我可以在后面的代码中设置文本框的MaxLength属性,但我宁愿不这样做。有没有我可以在前端代码中设置MaxLength属性,如上所述?
答案 0 :(得分:14)
您可以使用DataBinding:
<asp:TextBox
ID="tbName"
CssClass="formField"
MaxLength="<%# Constants.MaxCharacterLengthOfGameName %>"
runat="server">
</asp:TextBox>
并在您的代码后面的Page_Load调用:
tbName.DataBind();
或直接对数据页进行数据绑定:
this.DataBind();
答案 1 :(得分:6)
&lt;%=表达式%&gt;语法被转换为Response.Write(表达式),将表达式的值注入页面的渲染输出中。因为&lt;%=表达式%&gt;被翻译成(本质上)一个Response.Write这些语句不能用于设置Web控件属性的值。 换句话说,您不能拥有如下标记:
<asp:Label runat="server" id="CurrentTime" Text="<%= DateTime.Now.ToString() %>" />
答案 2 :(得分:6)
尝试使用自定义表达式构建器:
// from http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx
[ExpressionPrefix("Code")]
public class CodeExpressionBuilder : System.Web.Compilation.ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry,
object parsedData, ExpressionBuilderContext context)
{
return new CodeSnippetExpression(entry.Expression);
}
}
然后像
一样使用它<asp:TextBox ID="tbName" CssClass="formField" MaxLength="<%$ Code: Constants.MaxCharacterLengthOfGameName %>" runat="server"></asp:TextBox>
答案 3 :(得分:4)
正如罗普斯塔所说,它不适用于&lt;%=表达式%&gt;句法。
但你可以使用数据绑定,这只需要你使用&lt;%#expression%&gt;语法,然后在CodeBehind中调用MyTextBox.Databind。
当然,在那时,在CodeBehind中执行整个操作可能会更清楚。
另一种选择:如果你真的希望这是声明性的,你可以远离Label并将你的表达式嵌入到span标签中。这样你仍然可以应用CSS等,我认为&lt;%=表达式%GT;语法可行。
答案 4 :(得分:3)
为什么不在后面的代码中的Page_Init回调函数中设置它?
答案 5 :(得分:1)
看起来您希望能够从一个位置控制特定类型文本框的最大长度,这样如果需要更改最大长度,您只需要在一个位置更改它。
您可以使用皮肤文件来完成此操作。您可以像平常一样在皮肤文件中设置最大长度,然后使用该最大长度的任何文本框都将使用皮肤。如果长度发生变化,那么您只需要更改皮肤文件。
答案 6 :(得分:1)
此示例旨在从linq中获取底层sql类型的最大长度。但您应该能够根据需要进行自定义
http://blog.binaryocean.com/2008/02/24/TextBoxMaxLengthFromLINQMetaData.aspx
答案 7 :(得分:1)
您可以使用数据绑定
来完成<asp:TextBox
ID="tbName"
CssClass="formField"
MaxLength='<%# Constants.MaxCharacterLengthOfGameName %>'
runat="server" />
然后在
背后的代码中protected void Page_Load(object sender, EventArgs e) {
Page.DataBind();
}
答案 8 :(得分:1)
如果您愿意,可以在.aspx文件中嵌入“普通”代码,例如:
<%
tbName.MaxLength = Constants.MaxCharacterLengthOfGameName
%>
<asp:TextBox ID="tbName" CssClass="formField" runat="server"></asp:TextBox>
这让人回想起一种老式的“经典”ASP方式。