<asp:TextBox ID="tbName" CssClass="formField" MaxLength="<%=Constants.MaxCharacterLengthOfGameName %>" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用.我可以在后面的代码中设置文本框的MaxLength属性,但我宁愿不这样做.有没有我可以像前面那样在前端代码中设置MaxLength属性?
Dar*_*rov 14
您可以使用DataBinding:
<asp:TextBox
ID="tbName"
CssClass="formField"
MaxLength="<%# Constants.MaxCharacterLengthOfGameName %>"
runat="server">
</asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
并在您的代码后面的Page_Load调用:
tbName.DataBind();
Run Code Online (Sandbox Code Playgroud)
或者直接对数据页进行数据绑定:
this.DataBind();
Run Code Online (Sandbox Code Playgroud)
<%= expression%>语法被转换为Response.Write(expression),将expression的值注入页面的呈现输出.因为<%= expression%>被转换为(本质上)Response.Write,所以这些语句不能用于设置Web控件属性的值.换句话说,您不能拥有如下标记:
<asp:Label runat="server" id="CurrentTime" Text="<%= DateTime.Now.ToString() %>" />
Run Code Online (Sandbox Code Playgroud)
资料来源:http://aspnet.4guysfromrolla.com/articles/022509-1.aspx
尝试使用自定义表达式构建器:
// 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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后像使用它一样
<asp:TextBox ID="tbName" CssClass="formField" MaxLength="<%$ Code: Constants.MaxCharacterLengthOfGameName %>" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4227 次 |
| 最近记录: |