Blazor:通过路由参数问题传递序列化数据(里面有 URI)

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

出于我的应用程序的目的,我需要通过 URI 传递一些数据。因为它,用户可以轻松共享页面链接,所有数据都在里面编码。以下一切正常:

    private void OnClickHandler()
    {
        var data = new List<DataModel>()
            {
                new()
                {
                    Description = "This problem",
                    // Other fields
                },
                new()
                {
                    Description = "Is annoying",
                },
            };
        var rawData = System.Net.WebUtility.UrlEncode(System.Text.Json.JsonSerializer.Serialize(data));

        Url = CHEMIN + rawData;
    }

我得到一个 URL,我可以将它粘贴到另一个 Chrome 窗口,一切都非常有效。 当我尝试在我的 DataModel 中添加“Url”字段时出现问题

var data = new List<DataModel>()
            {
                new()
                {
                    Description = "This problem",
                    Url = "https://stackoverflow.com/questions/73114505/set-muddrawer-width-to-100-on-mobile/",
                },
                new()
                {
                    Description = "Is annoying",
                    Url = "https://stackoverflow.com/questions/",
                },
            };

当我尝试解析我得到的 URL 时,我遇到了浏览器问题,如下所示:

注意:我试过几个浏览器,结果相同。

我想我可以理解当您尝试向它提供带有 URI 的数据时,与 System.Net.WebUtility.UrlEncode 方法存在混淆。

有人能帮助我吗?非常感谢

c# .net url blazor encode
1个回答
0
投票

根据本文档(https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/routing?view=aspnetcore-7.0#routing-with-urls-that-contain-dots) ,我们只需在服务器 Program.cs 文件中添加一行即可。

发题后才找到有点惭愧,两天来一直在寻找解决方案!

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