我正在尝试为我的Blazor网页之一创建发送日期时间的路线。根据文档,它受支持,但是我似乎无法使其正常工作。这是我的做法。
我要去哪里:
@page "/routeTest/{number:int}/{date:datetime}"
@code {
[Parameter] public int number { get; set; }
[Parameter] public DateTime date { get; set; }
}
我如何尝试在那里导航
NavigationManager.NavigateTo("routeTest/"+numberToSend+"/"+dateToSend);
将我导航到
https://localhost:44383/routeTest/123/12/11/2019%204:36:26%20PM
虽然在技术上正确,但这是行不通的,我相当确定其dateTime对象有问题。我应该如何正确发送dateTime对象?
以ISO8601格式DateTime
发送yyyy-MM-ddTHH:mm:ss
。
您可以使用:
dateToSend.ToString("s")
或
dateToSend.ToString("yyyy-MM-ddTHH:mm:ss");
问题在于,您所用的语言日期使用的是斜杠分隔符,这使Blazor认为您正在尝试访问其他路线。
[每当将日期作为URL参数发送时,它们都必须具有不变的区域性,并使用破折号。
NavigationManager.NavigateTo("routeTest/"+numberToSend+"/"+dateToSend.ToString("yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture));
供参考,请参阅official documentation中的警告
这可以解决您的问题:
@code{
int numberToSend = 123;
string dateToSend = DateTime.Now.ToString("yyyy-MM-dd");
private void Naviagte()
{
NavigationManager.NavigateTo("routeTest/" + numberToSend + "/" + dateToSend);
}
}