英文:
.NET 7.0 set culture for inputTagHelper in type Date
问题
我正在运行一个带有Razor的ASP.NET Core 7.0 Web应用程序,但我找不到在日期输入标签助手中更改本地化的方法。
如何将此文本切换到西班牙语?
谢谢提前!
英文:
I'm running an ASP.NET Core 7.0 web app with Razor and I can't find a way to change localization in input tag helper for type date.
How can I switch this text to Spanish?
Thanks in advance!
答案1
得分: 1
看上去你已经整理好了一份指南,这是你的西班牙文化设置代码:
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new[]
    {
        new CultureInfo("es-ES"),
    };
    options.DefaultRequestCulture = new RequestCulture("es-ES");
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
});
var app = builder.Build();
var localizationOptions = app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(localizationOptions.Value);
然后是设置浏览器默认语言为西班牙语。最后,在Razor页面中,使用asp-format属性来格式化日期,确保使用适合西班牙文化的格式字符串。测试页面的代码如下:
@page
@model TestModel
@{
    ViewData["Title"] = "Test";
}
<h1>@ViewData["Title"]</h1>
<form method="post">
    <div class="form-group">
        <label asp-for="DateOfBirth"></label>
        <input asp-for="DateOfBirth" class="form-control" type="date" asp-format="{0:d}" />
        <span asp-validation-for="DateOfBirth" class="text-danger"></span>
    </div>
    @*<button type="submit" class="btn btn-primary">Submit</button>*@
</form>
还有Test.cshtml.cs的代码:
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WorkRazor.Pages
{
    public class TestModel : PageModel
    {
        private readonly ILogger<PrivacyModel> _logger;
        [Required]
        [DataType(DataType.Date)]
        [Display(Name = "Date of Birth")]
        public DateTime DateOfBirth { get; set; }
        public TestModel(ILogger<PrivacyModel> logger)
        {
            _logger = logger;
        }
        public void OnGet()
        {
        }
    }
}
英文:
Step1: Add the following codes in Program.cs file to use Spanish culture:
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
    new CultureInfo("es-ES"),
};
options.DefaultRequestCulture = new RequestCulture("es-ES");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
var app = builder.Build();
var localizationOptions = app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(localizationOptions.Value);
Step2: Set Spanish as your browser's default language.
Step3: In Razor page, use the asp-format attribute to format the date using the appropriate format string for the Spanish culture. Here is the code of my test razor page:
@page
@model TestModel
@{
    ViewData["Title"] = "Test";
}
<h1>@ViewData["Title"]</h1>
<form method="post">
    <div class="form-group">
        <label asp-for="DateOfBirth"></label>
        <input asp-for="DateOfBirth" class="form-control" type="date" asp-format="{0:d}" />
    <span asp-validation-for="DateOfBirth" class="text-danger"></span>
</div>
@*<button type="submit" class="btn btn-primary">Submit</button>*@
</form>
and here is the code of the Test.cshtml.cs:
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WorkRazor.Pages
{
    public class TestModel : PageModel
{
    private readonly ILogger<PrivacyModel> _logger;
    [Required]
    [DataType(DataType.Date)]
    [Display(Name = "Date of Birth")]
    public DateTime DateOfBirth { get; set; }
    public TestModel(ILogger<PrivacyModel> logger)
    {
        _logger = logger;
    }
    public void OnGet()
    {
    }
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。



评论