Blazor 路由对象参数
Blazor routing object parameter
我们可以像这样在 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(参见上面的示例代码)并执行服务器请求以获取您的数据。
- 创建应用内状态管理器服务,您可以使用它在 pages/components 之间传递对象。
我遇到过这样一种情况,我需要通过 URL 将复杂的身份令牌字符串发送到 blazor 组件中,我使用了查询字符串并使用 NavigationManager.Uri 手动解析了该字符串。 post 足够长,如果您想查看我的查询字符串解析示例,请告诉我。
希望对您有所帮助!
尝试使用序列化。像这样:
Person p = new Person();
@{ string json = JsonConvert.SerializeObject(p);
var link = $"OtherComponentName/{json}";
}
记住:
@使用Newtonsoft.Json;
我们可以像这样在 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(参见上面的示例代码)并执行服务器请求以获取您的数据。
- 创建应用内状态管理器服务,您可以使用它在 pages/components 之间传递对象。
我遇到过这样一种情况,我需要通过 URL 将复杂的身份令牌字符串发送到 blazor 组件中,我使用了查询字符串并使用 NavigationManager.Uri 手动解析了该字符串。 post 足够长,如果您想查看我的查询字符串解析示例,请告诉我。
希望对您有所帮助!
尝试使用序列化。像这样:
Person p = new Person();
@{ string json = JsonConvert.SerializeObject(p);
var link = $"OtherComponentName/{json}";
}
记住:
@使用Newtonsoft.Json;