Можем ли мы использовать в aspx-коде Templatefield .HeaderText в элементе управления ErrorMessage?

В aspx-коде я хотел бы сослаться на заголовок поля Templatefield как значение в ErrorMessage элемента управления проверкой, но не знаю, как это сделать. Я хочу уменьшить количество ошибок копирования-вставки.

Я привожу пример того, что я хотел бы закодировать в aspx-код.

<asp:TemplateField HeaderText="Last Name" SortExpression="cLASTNAME">
   <EditItemTemplate>
      <asp:TextBox ID="txtLastName" runat="server" Text='<%# Bind("cLASTNAME") %>' MaxLength="20" CssClass="ucIsRequired"></asp:TextBox>
      <asp:RequiredFieldValidator ID="rqfvLastName" runat="server" 
         ControlToValidate="txtLastName" 
         ErrorMessage="'??HeaderText??**' value is required."
         Display="none" ValidationGroup="valgrpDetails"
         SetFocusOnError="False" Font-Size="Small"></asp:RequiredFieldValidator>
   </EditItemTemplate>
...etc...

Обратите внимание на ??HeaderText?? в коде ErrorMessage. Я хотел бы, чтобы HeaderText ("Фамилия") был вставлен туда, где ??HeaderText?? заключается в том, что при отображении текста ошибки текст ошибки будет выглядеть так: «Требуется значение 'Last Name'» (конечно, без кавычек).

Ваши комментарии и решения с примерами будут очень кстати и полезны.

Конечно, если есть способ сослаться на заголовок поля Templatefield в коде программной части, предоставьте образец фрагмента.

Заранее спасибо... Джон


person John D    schedule 02.06.2015    source источник


Ответы (1)


Возможным решением является использование файла ресурсов, а затем чтение его значения, когда оно вам нужно, и вы не хотите повторять строку.

  1. Добавьте папку asp.net с именем App_GlobalResources в корень вашего веб-сайта и добавьте в нее новый файл .resx. Назовите это HeaderNames.resx.
  2. Откройте этот файл и добавьте строку с именем LastNameHeaderText и значением Last Name.
  3. Затем в своем RequiredFieldValidator замените свойство ErrorMessage следующим:

    ErrorMessage = '<%# Resources.HeaderNames.LastNameHeaderText + " value is required." %>'
    
  4. Наконец, чтобы использовать то же самое в заголовке шаблона, добавьте следующее в событие привязки данных GridView (или любое другое):

    protected void MyDataBound(object sender, EventArgs e)
    {
        ((GridView)sender).Columns[1].HeaderText = Resources.HeaderNames.LastNameHeaderText;
    }
    
person zed    schedule 24.07.2015
comment
Спасибо за ваш ответ. Я научился у вас хорошему трюку :-) спасибо. - person John D; 13.08.2015