You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:06:08