我在Blazor文件的EditForm中有输入标记(InputDate(。
<div class="form-group">
<label>Check In Date</label>
<InputDate @bind-Value="HomeModel.StartDate" class="form-control" min="@DateTime.Now.ToString("MM/dd/yyyy")" type="text"/>
</div>
然后将其提交给api服务器。
但问题是带有Url的DateTime格式,它显示
https://localhost:44320/api/hotelroom?checkInDate=04.%2012.%202022&checkOutDate=04.%2013.%202022
因此返回值为400错误。
当我大摇大摆地检查这个日期时间格式时,没有问题。
StartDate是Url中的checkInDate。
当我尝试调试时,checkInDate显示类似于'04。2022年11月。
我预计这是2022年11月4日。
我的电脑是为日本准备的。在不更改本地电脑的时间设置的情况下,有什么方法可以解决这个问题吗?
即使我使用"ToString("MM/dd/yyyy"("方法将参数转换为字符串,url也总是这样的
04.%2012.%202022
所以我使用了提供商
ToString("MM/dd/yyyy", new CultureInfo("en-US"))
然后一切都很好。字符串格式不能超过操作系统设置。
谢谢大家回答我的问题。
另一个可能的解决方案是在运行项目时更改项目的区域性,因此在启动类中应该添加:
app.UseRequestLocalization(options =>
{
var supportedCultures = new[] { "en-US" };
options.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures)
.SetDefaultCulture("en-US");
});
使用类似的提供商
ToString("MM/dd/yyyy", new CultureInfo("en-US"))
将强制您使用新的区域性信息设置每个ToString(这在很大程度上可能很乏味(