如何在Blazor中发送带有路线的日期时间

问题描述 投票:0回答:3

我正在尝试为我的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对象?

c# routing blazor blazor-server-side
3个回答
0
投票

以ISO8601格式DateTime发送yyyy-MM-ddTHH:mm:ss

您可以使用:

dateToSend.ToString("s")

dateToSend.ToString("yyyy-MM-ddTHH:mm:ss"); 

0
投票

问题在于,您所用的语言日期使用的是斜杠分隔符,这使Blazor认为您正在尝试访问其他路线。

[每当将日期作为URL参数发送时,它们都必须具有不变的区域性,并使用破折号。

NavigationManager.NavigateTo("routeTest/"+numberToSend+"/"+dateToSend.ToString("yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture));

供参考,请参阅official documentation中的警告


0
投票

这可以解决您的问题:

@code{
    int numberToSend = 123;
    string dateToSend = DateTime.Now.ToString("yyyy-MM-dd");

    private void Naviagte()
    {
        NavigationManager.NavigateTo("routeTest/" + numberToSend + "/" + dateToSend);
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.