如何在ASP.NET Core中使用Syncfusion波斯日期选择器
在ASP.NET Core中配置Syncfusion波斯(Jalali)日期选择器的可行方案
1. 安装依赖包
首先确保项目中安装了Syncfusion的ASP.NET Core组件包,通过.NET CLI或NuGet安装:
dotnet add package Syncfusion.EJ2.AspNet.Core
2. 配置全局本地化与文化支持
之前Blazor中仅设置app.UseRequestLocalization("fa")的方式在ASP.NET Core MVC/Razor Pages中不够完整,需要注册本地化服务并指定完整的波斯文化标识(fa-IR):
在Program.cs中添加以下配置:
var builder = WebApplication.CreateBuilder(args); // 注册本地化服务,指定资源目录 builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); // 配置请求本地化规则 var supportedCultures = new[] { "fa-IR" }; builder.Services.Configure<RequestLocalizationOptions>(options => { options.DefaultRequestCulture = new RequestCulture("fa-IR"); options.SupportedCultures = supportedCultures.Select(c => new CultureInfo(c)).ToList(); options.SupportedUICultures = supportedCultures.Select(c => new CultureInfo(c)).ToList(); }); // 注册Syncfusion MVC服务 builder.Services.AddSyncfusionMvc(); var app = builder.Build(); // 启用请求本地化中间件(需在路由中间件之前) app.UseRequestLocalization(); // 其他中间件配置(静态文件、路由、授权等) app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
3. 引入波斯本地化资源
在页面布局文件(如_Layout.cshtml)的头部,引入Syncfusion的基础样式和波斯本地化脚本:
<!-- Syncfusion Material主题样式 --> <link href="https://cdn.syncfusion.com/ej2/material.css" rel="stylesheet" /> <!-- 波斯本地化脚本 --> <script src="https://cdn.syncfusion.com/ej2/js/i18n/fa.js"></script> <!-- Syncfusion核心脚本 --> <script src="https://cdn.syncfusion.com/ej2/dist/ej2.min.js"></script>
如果使用本地资源,需将Syncfusion包中的i18n/fa.js文件复制到项目wwwroot目录下,并调整引用路径。
4. 初始化波斯日期选择器
在Razor视图或页面中,直接使用Syncfusion的日期选择器组件并指定locale属性为fa-IR:
<ejs-datepicker id="jalaliDatePicker" locale="fa-IR" placeholder="انتخاب تاریخ"></ejs-datepicker>
如果用纯JavaScript初始化,代码如下:
const datePicker = new ej.calendars.DatePicker({ locale: 'fa-IR', placeholder: 'انتخاب تاریخ' }); datePicker.appendTo('#jalaliDatePicker');
5. 服务器端日期转换(可选)
若需要在服务器端处理公历与波斯历的转换,可使用Syncfusion提供的CalendarUtil工具类:
using Syncfusion.EJ2.Calendars; // 公历转波斯历 DateTime gregorianDate = DateTime.Now; DateTime jalaliDate = CalendarUtil.ConvertToJalali(gregorianDate); // 波斯历转公历 DateTime convertedGregorian = CalendarUtil.ConvertToGregorian(jalaliDate);
关键说明
之前Blazor的方案在ASP.NET Core中无效,是因为Blazor组件会自动继承全局文化设置并加载对应本地化资源,但ASP.NET Core MVC/Razor Pages需要显式指定组件的locale属性,同时确保完整的文化标识(fa-IR而非fa)和本地化脚本正确加载。
内容的提问来源于stack exchange,提问作者topcool
相关产品推荐
相关产品推荐

