代码之家  ›  专栏  ›  技术社区  ›  DannykPowell

设置ASP.NET RangeValidator的区域性

  •  2
  • DannykPowell  · 技术社区  · 15 年前

    一个asp:rangevalidator从页面/线程获取它的区域性信息,所有有关获取正确区域性的在线建议似乎都是在线程上设置CultureInfo。

    Rick Strahl's west wind blog is typical advice

    但是,由于以这种方式运行服务器代码时出现问题,我们正在剥离以前遵循此建议使用的代码。

    我的问题是:有没有一种方法可以设置RangeValidator的区域性而不影响主页/线程区域性。我希望RangeValidator尊重浏览器设置,但不幸的是,他们尊重的是服务器文化。

    2 回复  |  直到 15 年前
        1
  •  1
  •   DannykPowell    15 年前

    由于没有答案,我将回答我自己的问题。

    答案是,这似乎不可能——没有办法直接为验证器设置区域性。

    我能够实现的目标是让服务器端代码始终在英语区域性中运行,但随后导致验证器在浏览器区域性中工作的方法是在页面预呈现的末尾设置线程当前区域性。因此,到目前为止,代码在英语区域性中运行,但我们及时设置该区域性,使其在ASP.NET运行时使用它来设置验证器时生效。

    这对于验证器的有效操作很好,在我的例子中,允许法语浏览器上的用户以法语格式输入数字。但是还有另一个问题-如果您有代码在提交/回发时验证服务器端,则此验证现在将失败-在回发时,验证程序的原始区域性设置似乎未保留,它们在验证服务器端时使用适当的区域性:当然,法文号码不会被视为有效,验证失败。

    我希望这能帮助其他遇到同样问题的人

        2
  •  0
  •   Ross Presser    10 年前

    另一个更好的答案是在RangeValidator中使用内联服务器代码:

    <asp:RangeValidator ID="txtLockMaxRangeValidator" runat="server"
         ValidationGroup="templateInfo" ControlToValidate="txtLockMaxFontSize"
         CssClass="validatorTextbox" 
         MinimumValue="<%# (0.01).ToString(System.Globalization.CultureInfo.CurrentUICulture)%>" 
         MaximumValue="9999" Type="Double" Text=">0 and <=9999" 
         ToolTip="<%$ Resources:Resource, TemplateInfo_maxFontValidator %>" 
         Display="Dynamic" />
    

    建议由 this link .