在 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应用程序开发中设置启动画面

在MyEclipse中设置jsp页面为默认utf-8编码

Blazor 修仙之旅 - 启动页

Blazor 修仙之旅 - 启动页

MyEclipse使用总结——在MyEclipse中设置jsp页面为默认utf-8编码

vb中设置对象的属性有几种方法