Я опоздал на вечеринку здесь, но здесь идет так или иначе ...
Вы можете создать свой собственный Expression Builder
обрабатывать этот случай. Это позволит вам использовать синтаксис, как это:
<asp:TextBox
runat="server"
MaxLength="<%$ MySettings: UsernameMaxLength %>"
ID="Username"/>
Обратите внимание на $
знак.
Чтобы узнать, как сделать вас собственными Expression Builder
, пожалуйста, просмотрите этот старый, но по-прежнему актуальный tutorial. Не позволяйте стене текста пугать вас, потому что, в конце концов, создание выразительного строителя легко. Он в основном состоит из получения класса от System.Web.Compilation.ExpressionBuilder
и переопределения метода GetCodeExpression
. Вот очень простой пример (некоторые части этого кода была заимствована из связанного учебника):
public class SettingsExpressionBuilder : System.Web.Compilation.ExpressionBuilder
{
public override System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, System.Web.Compilation.ExpressionBuilderContext context)
{
// here is where the magic happens that tells the compiler
// what to do with the expression it found.
// in this case we return a CodeMethodInvokeExpression that
// makes the compiler insert a call to our custom method
// 'GetValueFromKey'
CodeExpression[] inputParams = new CodeExpression[] {
new CodePrimitiveExpression(entry.Expression.Trim()),
new CodeTypeOfExpression(entry.DeclaringType),
new CodePrimitiveExpression(entry.PropertyInfo.Name)
};
return new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression(
this.GetType()
),
"GetValueFromKey",
inputParams
);
}
public static object GetValueFromKey(string key, Type targetType, string propertyName)
{
// here is where you take the provided key and find the corresponding value to return.
// in this trivial sample, the key itself is returned.
return key;
}
}
Для того, чтобы использовать его на вашей странице ASPX, вы должны зарегистрировать его в web.config
:
<configuration>
<system.web>
<compilation ...>
<expressionBuilders>
<add expressionPrefix="MySettings" type="SettingsExpressionBuilder"/>
</expressionBuilders>
</compilation>
</system.web>
</configuration>
Это просто для того, чтобы показать вам, что это не сложно. Но, пожалуйста, просмотрите учебник, к которому я привязан, чтобы посмотреть пример того, как обращаться с ожидаемым типом возвращаемого значения из вашего метода в зависимости от назначаемого свойства и т. Д.
Попробуйте использовать одиночные кавычки 'MaxLength = '<% = Настройки .UsernameMaxLength%> '' –
Я полагаю, вы можете сделать то же самое, используя код в событии' page_init'. – shahkalpesh