在 Blazor 中设置启动页面
Posted
技术标签:
【中文标题】在 Blazor 中设置启动页面【英文标题】:Setting a startup page in Blazor 【发布时间】:2019-11-14 12:40:26 【问题描述】:我的 Blazor 应用程序中的启动页面是 Index.cshtml。我想把启动页改成首页,即我的Home.cshtml。 我正在使用 vs2019、ASPNET CORE Blazor (0.9.0-preview3-19154-020)。
Blazor Serverside 在 Startup.cs 中有路由,我认为它是用于服务的,而不是用于页面的......并且是通过创建新的 Blazor 项目生成的。
app.UseMvc(routes =>
routes.MapRoute(name: "default", template: "controller/action/id?");
);
客户的初创公司(由新的 Blazor 项目生成):
public void ConfigureServices(IServiceCollection services)
public void Configure(IComponentsApplicationBuilder app)
app.AddComponent<App>("app");
我需要以某种方式在客户端 startup.cs 中注册路由吗?
index.cshtml 里面只有一行代码:
@page "/"
如何将“启动”页面从 Index.cshtml 更改为 Home.cshtml?
我查看了很多地方并了解 Blazor 是“实验性的”。感觉就像我正在努力改变这么简单的事情。
【问题讨论】:
【参考方案1】:只需将 @page "/" 放在您想要默认的页面顶部即可。从 Index.razor 中删除 @page "/"
@page "/"
@page "/fetchdata"
【讨论】:
【参考方案2】:复制包含路由模板的@page
指令:
@page "/"
从 Index.cshtml 文件到 Home.cshtml 文件,然后删除 Index.cshtml 文件,或者提供不同的将模板路由到其@page
指令,例如
@page "/index"
【讨论】:
【参考方案3】:您不需要在启动时配置路由。路由只适用于每个剃须刀页面。您在@page 上放置的内容是该剃须刀页面的路由路径,例如Index.razor 路由到根路径“/”。
@page "/"
<h1>Index Page</h1>
@code
//Code here..
对于不同的 razor 页面使用相同的路由不是一个好主意,因此,如果您想使用 Home.razor 页面上的根路径,请确保将 Index.razor 更改为不同的路由。
如果你想要的是一个重定向,比如说,而不是让你的网站加载到 www.yourdomain.com,你希望它加载到 www.yourdomain.com/home 那么您可以在您的 Index.razor 上执行以下操作
@page "/"
@inject NavigationManager NavManager
<h1>Index Page</h1>
@code
protected override void OnInitialized()
NavManager.NavigateTo("/home");
这假设您的 Home.razor 上也有以下路由
@page "/home"
<h1>Index Page</h1>
@code
//Code here..
【讨论】:
【参考方案4】:这就是我们最终做的事情(无论好坏)... 我们通过大量测试发现,cshtml 文件中的以下代码行导致了一个错误:
@inject Microsoft.AspNetCore.Blazor.Services.WebAssemblyUriHelper UriHelper
删除此行后,我们通过更改修复了另一个错误: 这=
// Create list of clients
List<Clients> clientList = new List<Clients>();
到这=
// Create list of clients
List<CWBlah.Shared.Models.Clients> clientList = new `List<CWBlah.Shared.Models.Clients>();`
所以,这似乎是一个范围界定问题,尽管我无法清楚地理解为什么。当我将@using 指令添加到页面顶部时,代码似乎没有“听”该指令。我希望@using CWBlah.Shared.Models 将允许我只使用客户端而不是确定整个变量的范围。 我们最终没有进行重定向,而是将所有“仪表板”逻辑放入“Index.cshtml”中。
【讨论】:
以上是关于在 Blazor 中设置启动页面的主要内容,如果未能解决你的问题,请参考以下文章
如何在window phone 8应用程序开发中设置启动画面