在aspx-code中,我们可以在验证控件ErrorMessage中使用Templatefield .HeaderText吗?

时间:2015-06-02 11:58:40

标签: asp.net webforms web-controls

在aspx代码中,我想引用Templatefield HeaderText作为验证控件的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...

请注意ErrorMessage代码中的 ?? HeaderText ?? 。我想将HeaderText(“姓氏”)插入?? HeaderText ??这样当错误文本被呈现时,错误文本将是:“'姓氏'值是必需的。”(当然,没有引号)。

您的评论和解决方案将非常受欢迎且非常有用。

当然,如果有一种方法可以在代码隐藏中引用Templatefield的HeaderText,请提供一个示例代码段。

先谢谢...约翰

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用资源文件,然后在需要时读取其值,并且不想重复该字符串。

  1. 将名为App_GlobalResources的asp.net文件夹添加到您的网站根目录,并在其中添加新的.resx文件。称之为HeaderNames.resx
  2. 打开该文件,添加一行:LastNameHeaderText作为名称,Last Name作为其值。
  3. 然后,在RequiredFieldValidator中使用以下内容替换您的ErrorMessage媒体资源:

    ErrorMessage = '<%# Resources.HeaderNames.LastNameHeaderText + " value is required." %>'
    
  4. 最后,要在模板标题上使用相同的内容,请在GridView(或其他)Data Bound事件中添加以下内容:

    protected void MyDataBound(object sender, EventArgs e)
    {
        ((GridView)sender).Columns[1].HeaderText = Resources.HeaderNames.LastNameHeaderText;
    }