如何在 ASP.NET MVC 页面上显示波斯数字?

2023-12-25

我正在建立一个需要支持英语和波斯语的网站。该网站是使用 ASP.NET MVC 3 和 .NET 4 (C#) 构建的。我的所有控制器都继承自 BaseController,它将文化设置为“fa-IR”(在测试期间):

Thread.CurrentThread.CurrentCulture = new CultureInfo("fa-IR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR");

在我看来,我使用静态帮助器类来转换为正确的时区并格式化日期。喜欢:

DateFormatter.ToLocalDateAndTime(model.CreatedOnUtc)

我正在使用 MoneyFormatter 对金钱做同样的事情。对于金钱,货币以波斯语正确打印(或者,至少我这么认为,因为我不懂波斯语。稍后将由我们的翻译人员验证)。日期也是如此,月份打印正确。这是当前显示的内容:

为了钱:

قیمت: ريال 1,000 

对于日期:

21:01 ديسمبر 3

在这些示例中,我希望数字也以波斯语打印。你如何做到这一点?

我也尝试添加:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />

在 HEAD 标签中,正如某些论坛上推荐的那样。但不会改变任何东西(据我所见)。我还在我的浏览器语言(IE 和 Firefox)中添加了“fa-IR”作为第一语言。也没有帮助。

有人对如何解决这个问题有任何想法吗?如果可能的话,我宁愿避免在英语数字和波斯语数字之间创建转换表。

此致,
Eric


经过进一步的研究,我找到了一位 Microsoft 员工的答案,指出他们不翻译数字,尽管完全可以使用 NativeDigits 属性提供的特定区域性的数字数组自行翻译(请参阅http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.nativedigits.aspx http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.nativedigits.aspx).

要查明以表单提交的文本是阿拉伯语还是拉丁语,我现在正在执行以下操作:

public bool IsContentArabic(string content)
{
    string pattern = @"\p{IsArabic}";
    return Regex.IsMatch(
        content, 
        pattern, 
        RegexOptions.RightToLeft | RegexOptions.IgnoreCase | RegexOptions.Multiline);
}

public bool IsContentLatin1(string content)
{
    string pattern = @"\p{IsBasicLatin}";
    return Regex.IsMatch(
        content, 
        pattern, 
        RegexOptions.IgnoreCase | RegexOptions.Multiline);
 }

为了将波斯数字转换为“拉丁”数字,我编写了这个助手:

public static class NumberHelper
{
    private static readonly CultureInfo arabic = new CultureInfo("fa-IR");
    private static readonly CultureInfo latin = new CultureInfo("en-US");

    public static string ToArabic(string input)
    {
        var arabicDigits = arabic.NumberFormat.NativeDigits;
        for (int i = 0; i < arabicDigits.Length; i++)
        {
           input = input.Replace(i.ToString(), arabicDigits[i]);
        }
        return input;
    }

    public static string ToLatin(string input)
    {
        var latinDigits = latin.NumberFormat.NativeDigits;
        var arabicDigits = arabic.NumberFormat.NativeDigits;
        for (int i = 0; i < latinDigits.Length; i++)
        {
            input = input.Replace(arabicDigits[i], latinDigits[i]);
        }
        return input;
    }
}

我还在模型绑定发生之前就开始关注,并将表单中的纯数字输入转换为拉丁数字(如果适用)。

Ako,对于什么方向,我们设法使用网页 html 标签上的“dir”属性(dir => 方向)解决了很多问题。像这样:

<html dir="rtl">

“dir”属性采用“rtl”(从右到左)或“ltr”(从左到右)。

希望这对某人有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET MVC 页面上显示波斯数字? 的相关文章

  • 卸载 SSL 时保护表单身份验证 Cookie

    我正在尝试使用 ASP NET MVC 2 0 和表单身份验证来保护我当前正在开发的网站 为了保护表单身份验证cookie 我想将requiresSSL 属性设置为true 以便浏览器仅在连接处于SSL 下时才发送cookie 并且显然确保
  • EF4 和 SQL Server 2000

    我使用 EF4 和 SQL Server 2005 开发了我的网站 但当转移到临时站点时 发现他们使用 SQL Server 2000 现在我收到此错误 我认为该错误与 SQL Server 2000 有关 Incorrect syntax
  • 为级联子列表构建一个空的 MVC DropdownListFor

    我想构建一个空的下拉列表来接收先前下拉列表选择的结果 实际视图 div Html DropDownListFor m gt m Make Id Model MakeList HeelpResources DropdownlistMakeFi
  • 使用默认行为将模型绑定到接口

    我正在尝试将控制器操作绑定到接口 但仍保持默认的绑定行为 public class CoolClass ISomeInterface public DoSomething get set ISomeInterface public clas
  • Kendo Grid 内联编辑中的多选列表

    我需要在剑道网格 内联编辑 中使用多选列表 以便用户可以从每行列表中选择多个值 以下是我的要求 显示时 剑道网格应显示所有选定值的逗号分隔列表 添加时 剑道网格应显示多选列表并允许选择多个值 编辑时 剑道网格应显示具有已选择值的多选列表 用
  • MVC DropDownListFor 和 StringLength 属性不能很好地协同工作

    我的字符串长度验证在具有字符串值的下拉列表上总是失败 这是我的模型 Required ErrorMessage Required StringLength 2 MinimumLength 2 Display Name Home Addres
  • SignalR 的浏览器兼容性如何?

    我在网上找到的最多的是 SignalR FAQ 其中指出 SignalR 在 IE6 7 中不起作用 但是 出于法律原因 我需要向客户提供受支持的浏览器列表 SignalR 有这样的经过测试的浏览器列表吗 Thanks 看起来微软已经发布了
  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 在启用 LowercaseUrls 的情况下保留路由参数中的大小写

    我在用routes LowercaseUrls true 在我的 MVC 4 应用程序中 它运行得很好 但是 参数也会变成小写 所以如果我有一条像 routes MapRoute name MyController url foo hash
  • 从 viewModel 在 Asp.net MVC 3 上实现 Dropdownlist

    我是 net 和 mvc 平台的新手 我有很多 int 字段来存储一些下拉列表值 由于数据库大小 我创建了 int 类型的字段 所以我通过这种方法实现 dropdownlist 它有效 但我不这样做不知道在视图模型上存储值文本是否是正确的解
  • 如何分配Profile值?

    我不知道我缺少什么 但我在 Web config 文件中添加了 Profile 属性 但无法访问 Profile Item在代码中或创建一个新的配置文件 我今天也遇到了同样的问题 学到了很多东西 Visual Studio 中有两种项目 网
  • Global.asax 和 Error.aspx 中的 ASP.NET MVC 错误日志记录

    我正在创建一个 ASP NET MVC 应用程序 我需要在两个地方处理异常 Global asax vb 文件 Public Class MvcApplication Inherits System Web HttpApplication
  • 如何在 MVC 3 中基于 XML 文件动态创建控件

    我有一个以 XML 格式存储在数据库中的 XML 文件 其中包含一些控件 例如下拉文本框 标签文本区域等 这些控件可能有也可能没有初始值 所以我的目标是读取 XML 文件 并根据控件类型 我需要动态创建该控件并关联初始值 如果有 并且页面的
  • 如何将包含动态内容的捆绑包添加到 ASP.NET Web 优化

    我正在使用 SignalR 它映射到虚拟路径 signalr 上的 asp net 应用程序 SignalR 在应用程序上动态创建 JavaScript 代理集线器 以虚拟路径 signalr hubs 开始 所以网址 http myapp
  • URL 中的点 (.) 字符错误

    当我点击编辑具有此 url 的用户时遇到问题ASP NET MVC 3项目 http domain com 8089 User EditUser username surname IDUser e11a621p df11 4687 9903
  • 如何使用 EF Code First 解释枚举类型

    这是一个模型 Public class Person Key Public int PersonId get set Public int Age get set Public ColorEnum FavoriteColor get set
  • .Net MVC 4 项目失败,并出现事件日志错误“模块 DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll 无法加载。数据是错误。”

    这不是 DotNetCore 项目 它是 MVC 4 项目 并且应用程序池已正确配置为使用 dotnet CLR v4 但在更新到新版本的 Windows 10 后 无论是内部版本还是新的周年更新 启动应用程序失败 事件日志显示以下错误 模
  • 使用ViewData或不使用ViewData

    我一直在阅读 Professional ASP NET MVC 1 0 一书 并阅读其他有关从控制器到视图中使用 ViewModel 而不是 ViewData 的资料 但后来我看到很多 ViewData 的例子都被用在一些困难的场景中 除了
  • MVC3数据缓存技术

    我有一个 sql 查询 存储过程 在结果显示在网络网格中之前需要大约 8 10 秒才能返回 关于 asp net mvc3 中的缓存的性能最佳实践是什么 以便用户不必每次都花费 8 10 秒来加载该数据 减少优化查询 你可以使用内存缓存 h
  • ASP.NET MVC3 IIS7.5:Cache-Control maxage 始终为 0(不利于客户端缓存)

    我正在使用 Fiddler 测试我的网站 并注意到网络服务器总是返回 Cache Control private s maxage 0 用于动态内容 MVC 操作 这可以防止页面在客户端缓存 不知道是MVC还是IIS的问题 我该如何修复它

随机推荐