Абстрактная проблема: я пытаюсь ограничить пользовательский ввод в текстовых полях до той же длины базы данных столбца.Поэтому я хочу установить атрибут maxlength на входе html, и максимальная длина должна совпадать с максимальной длиной, допустимой в базе данных.Я мог бы жестко закодировать эти константы во всем интерфейсе, но я пытаюсь установить это значение динамически.
Проблема: telerik RadComboBox не примет блок кода asp для установки свойства.Исключением является следующее:
Ошибка синтаксического анализатора
Описание : Произошла ошибка при синтаксическом анализе ресурса, необходимого для обслуживания этого запроса.Пожалуйста, просмотрите следующую конкретную информацию об ошибке разбора и измените исходный файл соответствующим образом.
Сообщение об ошибке синтаксического анализатора : Не удается создать объект типа 'System.Int32' из его строкового представления '<% Utility.GetColumnMaxLength <Portfolio>(x => x.Title)%>'для свойства' MaxLength '.
Я создал новый минимальный проект asp.net, чтобы продублировать проблему.Источник default.aspx (без кода .cs):
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TelerikCodeBlock._Default" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Import namespace="TelerikCodeBlock" %>
<%@ Import namespace="TelerikCodeBlock.DataModel" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<telerik:RadComboBox ID="txtboxTitle" runat="server" MaxLength="<% Utility.GetColumnMaxLength<Portfolio>(x => x.Title) %>" >
</telerik:RadComboBox>
</asp:Content>
Класс Utility был свернут до следующих значений:
namespace TelerikCodeBlock
{
public class Utility
{
public static int GetColumnMaxLength<T>(Expression<Func<T, object>> property)
{
// looks at Entity Framework metadata in real project ...
return 3;
}
}
}
Модель данных выглядит как
namespace TelerikCodeBlock.DataModel
{
public class Portfolio
{
public int Id { get; set; }
public string Title { get; set; }
}
}