在 maui 中使用 [RelayCommand] 发送后,ViewModel 中的 setter 在 Maui 中接收截断的字符串

After sending using [RelayCommand] in maui the setter in ViewModel receives truncated string in Maui

提问人:James Crutchley 提问时间:1/25/2023 更新时间:1/25/2023 访问量:166

问:

在 maui 中使用 [RelayCommand] 发送后,ViewModel 中的 setter 在 Maui 中接收截断的字符串。 原始字符串示例:“https://twit.memberfulcontent.com/rss/9039?auth=m9FZurRandomAuthonumbers6yB”

URL 的值在这里很好:

[RelayCommand]
    async Task Tap(string Url)
    {
        System.Diagnostics.Debug.WriteLine("Tap Sending: " + Url);
        await Shell.Current.GoToAsync($"{nameof(ShowPage)}?Url={Url}");
    }

当接收到这里时,URL被截断:


namespace NerdNewsNavigator2.ViewModel;

[QueryProperty("Url", "Url")]
public partial class ShowViewModel : ObservableObject
{
    #region Properties
    readonly TwitService _twitService;
    public ObservableCollection<Show> Shows { get; set; } = new();
    public string Url
    {
        set
        { // value is truncated string from Tap above.
            System.Diagnostics.Debug.WriteLine("ShowViewModel Recieving url: " + value);
            _ = GetShows(value);
            OnPropertyChanged(nameof(Shows));
        }
    }
// Code shortened for brevity

传递的字符串示例: “https://twit.memberfulcontent.com/rss/9039” 它在 ?认证

关于我可能做错了什么有什么建议吗?或者建议更好的方法来做到这一点?它适用于没有 ?标记在他们身上。100% 工作,除了这种特定类型的字符串。

我以为字符串不会被截断。

字符串 MVVM Maui 被截断

评论

1赞 Jason 1/25/2023
尝试对 url 进行编码

答:

1赞 H.A.H. 1/25/2023 #1

在 MAUI 中的页面之间传递数据的正确方法:

导航时:

Dictionary<string, object> query = new()
{
     { nameof(MyModel), myModel }
};
await Shell.Current.GoToAsync($"{nameof(MyPage)}", query);

导航时:

public void ApplyQueryAttributes(IDictionary < string , object > query)
{ 
    myModel = query[nameof(MyModel)] as MyModel;
}

(这不仅解决了消毒问题)