返回

根页面中的 Blazor 参数在 Azure 静态 Web 应用中不起作用

发布时间:2022-08-15 21:50:55 265
# html# 信息

我有一个正在处理的 Blazor wasm 项目,并且具有以下功能:

当用户到达mydomain.com/customer时,他们会被重定向到客户详细信息

正如预期的那样,所有这些功能都来自 API,并且客户列表是动态的,因此我没有为每个客户设计自定义页面。我 - 相反 - 有一个页面来完成那个

在我的代码中,我使用以下逻辑:

当用户键入 mydomain.com/ 时,我会显示所有可用客户的列表

如果用户导航到 mydomain.com/customer,我的 Index.razor 页面将不会显示客户列表,而是显示客户详细信息

在显示客户列表的第一种情况下,当用户单击客户时,我使用 NavigationManager 导航到“/customer”。这很好用!

当我在本地机器上运行应用程序时,如果我直接指向 https://localhost:port/customer 的 URL,我将被定向到客户页面。

本质上,一切都发生在根页面(Index.razor)上。我知道我可以重定向到 https://localhost:port/c/customer 以避免使用根目录,但我什至不确定这是否真的是我的问题,如果我可以使用更优雅的东西,我想避免它就像我上面的解决方案一样,它可以在我的机器上本地工作。

将其部署到 Azure 静态 Web 应用程序后,如果我尝试直接访问 https://azure-static-apps-page/customer,则会收到 404 错误。如果我尝试转到根页面然后单击列表中的客户,我不会收到错误消息。

我怀疑一旦它在 Azure 中发布,我就会遗漏一些配置。

如果有帮助,我<base href="/" />的 index.html 中确实有

有人可以帮助我理解为什么会这样吗?

我的索引.razor

@page "/"

@page "/{CustomerURL}"

@inject NavigationManager navigationManager

@if(string.isNullOrEmpty(CustomerURL)

{

  // Display list of customers (display a component)

} else

{

  // Display specific customer details (display a component)

  if(customer != null)

  {

    // Display customer details

  } else {

    <h3>Customer does not exist</h3>

  }

}

参数和客户对象:

[Parameter]

public string? Customer { get; set; }

private Customer customer;

我的 OnInitializedAsync:

protected override Task OnInitializedAsync()

{

   // If the parameter is not null, call the API to find the customer

   customer = APICall();

}

我的 SetParametersAsync:

public async override Task SetParametersAsync(ParameterView parameters)

{

    await base.SetParametersAsync(parameters);

    customer = APICall();

}

选择客户时的我的 OnClick 方法:

public void OnCustomerSelected(Customer c)

{

    // This is where the URL changes from https://localhost:port to https://localhost:port/customer

    navigationManager.NavigateTo("/" + c.CustomerUrl);

}

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像