blazor-server-side - Blazor 路由对象参数
问题描述
我们可以像这样在 blazor 中使用对象参数吗?
@page "/account/login/"
@page "/account/login/{Customer}"
@using Model
@(Customer?.Name ?? "Empty")
@code {
[Parameter]
public Customer Customer { get; set; }
}
解决方案
不,只有简单类型(int、string 等)。我建议不要对字符串使用这种类型的绑定。原因是 URL 具有被转换的保留字符,除非它们位于附加到 URL 末尾的查询字符串中。此外,如果您的字符串包含斜杠,blazor 将截断该字符串。例如
导航到“/account/login/test/123”将导致 id=test。
@page "/account/login/"
@page "/account/login/{id}"
@using Model
@(Customer?.Name ?? "Empty")
@code {
[Parameter]
public string id{ get; set; }
}
有几种方法可以克服这个问题。
- 发送一个 ID(参见上面的示例代码)并执行服务器请求以获取您的数据。
- 创建一个应用内状态管理器服务,您可以使用它在页面/组件之间传递对象。
我遇到过需要通过 URL 将复杂的身份令牌字符串发送到 blazor 组件的情况,我使用了查询字符串并使用 NavigationManager.Uri 手动解析了字符串。这篇文章足够长,如果您想查看我的查询字符串解析示例,请告诉我。
希望这可以帮助!
推荐阅读
- javascript - 使用jQuery和css显示隐藏的div时下推div?
- javascript - 在使用 multer 上传文件之前验证请求正文
- python - 使用 Paramiko / Twisted 模拟交互式 SSH 客户端
- laravel - Guzzle 发布嵌套数组问题
- html - div 内不可点击的按钮:相信是由于 svg 背景
- python - 如何组合生成器的生成器?
- javascript - 如何在js中无限地更改在间隔表上循环的形状颜色?
- arrays - 从数组创建新数组并将值推送到 Apps 脚本中的不同工作表的最佳方法是什么?
- python - 一维列表与二维列表中的浅拷贝
- excel - Excel日期格式问题