Blazor.net UI 不渲染任何内容

2024-01-09

我正在开发 Blaor.Net 应用程序,参考了互联网上的许多帖子。我面临的问题是,我想将代码从 UI 移动到单独的文件,以保持 razor 文件干净、可读和可理解。为此,我将 UI 端 C# 代码保存到一个从 BaseComponent 继承的单独组件中

@page "/Item"
@using WebApplication1.Shared
@using WebApplication1.Client.Services;
@inherits ItemComponent

@if (ItemList != null)
{
    <table class="table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Category</th>
                <th>Metal</th>
                <th>Price</th>
                <th>Quantity</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in ItemList)
            {
                <tr>
                    <td>@item.ID</td>
                    <td>@item.Name</td>
                    <td>@item.Category</td>
                    <td>@item.Metal</td>
                    <td>@item.Price</td>
                    <td>@item.Quantity</td>
                </tr>
            }
        </tbody>
    </table>
}

@functions{
    public List<ItemModel> ItemList;
    ItemComponent IC = new ItemComponent();

    protected override async Task OnInitAsync()
    {
        ItemList = IC.GetItems().Result;
    }
}

ItemComponent.cs

public class ItemComponent : ComponentBase
{
    private string BaseUrl = "http://localhost:52114/";
    public async Task<List<ItemModel>> GetItems()
    {
        HttpClient Http = new HttpClient();
        return await Http.GetJsonAsync<List<ItemModel>>(BaseUrl + "api/Item/GetItems");
    }
}

我不想在 UI 中进行 api 调用,而是希望将其放在单独的文件中,组件基本上充当此处 razor 页面的文件隐藏代码

Http.GetJsonAsync>(BaseUrl + "api/Item/GetItems");

但是创建组件并将其继承到 razor 后会抛出异常

System.Net.Http.HttpRequestException:无法建立连接,因为目标计算机主动拒绝它。 ---> System.Net.Sockets.SocketException:无法建立连接 因为目标机器主动拒绝了。在 System.Net.Http.ConnectHelper.ConnectAsync(字符串主机,Int32端口, CancellationToken CancellationToken) --- 内部异常堆栈结束 跟踪 --- 在 System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 端口、CancellationToken(cancellationToken)位于 System.Threading.Tasks.ValueTask1.get_Result() 在
System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage
请求、布尔值allowHttp2、CancellationToken(取消令牌)

在 System.Threading.Tasks.ValueTask1.get_Result() 处 System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage 请求,CancellationToken(取消令牌) System.Threading.Tasks.ValueTask1.get_Result() 在
System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage 请求,CancellationToken(取消令牌)
System.Threading.Tasks.ValueTask1.get_Result() 在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求、布尔值 doRequestAuth、CancellationToken(取消令牌) 在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求,CancellationToken(取消令牌) System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(任务1 sendTask,
HttpRequestMessage 请求,CancellationTokenSource cts,布尔值
disposeCts) 在 System.Net.Http.HttpClient.GetStringAsyncCore(Task1 获取任务)在 Microsoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.GetOpenedBrowserTabs(字符串 调试器主机)位于 Microsoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.DebugHome(HttpContext 语境)

浏览器在此异常后挂起,无法关闭,只能通过任务管理器关闭


所以你还需要进行一些重构。正如我在回答您之前的问题时所说,您需要将所有内容从functions块到后面的代码中。当使用基类时你不应该将其与functions阻止在视图中。

就您的 http 调用而言,您不需要添加已经为您完成的基本 URL,但您也不应该新建 HTTP 客户端。您应该将一个实例注入到您的代码后面。

您的代码中还存在一些其他小问题,因此我认为重新编写它以显示其外观可能会更容易。

@page "/Item"
@inherits ItemComponent

@if (ItemList != null)
{
    <table class="table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Category</th>
                <th>Metal</th>
                <th>Price</th>
                <th>Quantity</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in ItemList)
            {
                <tr>
                    <td>@item.ID</td>
                    <td>@item.Name</td>
                    <td>@item.Category</td>
                    <td>@item.Metal</td>
                    <td>@item.Price</td>
                    <td>@item.Quantity</td>
                </tr>
            }
        </tbody>
    </table>
}
public class ItemComponent : ComponentBase
{

    [Inject] HttpClient HttpClient { get; set; }

    public List<ItemModel> ItemList;

    protected override async Task OnInitAsync()
    {
        ItemList = await GetItems();
    }

    public async Task<List<ItemModel>> GetItems()
    {
        return await HttpClient.GetJsonAsync<List<ItemModel>>("api/Item/GetItems");
    }
}

只要您的后端设置正确(例如:CORS),这应该可以按预期工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blazor.net UI 不渲染任何内容 的相关文章

  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • BLOC 状态更改后有状态小部件未重建

    我无法理解为什么我的 Stateful 小部件在重建后没有更新状态 我有一个有状态的小部件 负责每秒递减一个计数器 因此它收到一个初始值 我将此初始值传递给状态并开始递减它 它还具有一个按钮 当按下该按钮时 会向我的块发送一个事件 该块会使
  • NoClassDefFoundError(初始化失败) - Websphere 和 IBM MQ

    我在部署到 Websphere 并与 IBM MQ 交互的基于 Spring 的 Web 应用程序上遇到问题 一切都很好 直到我尝试一些故障测试 当 Web 应用程序启动并运行时 我停止 IBM MQ 然后 我调用 Web 应用程序发送 J
  • 如何使用 Java 获取 Linux 中的总磁盘空间?

    我能够获得可用磁盘空间 我如何获得总磁盘空间 我的代码是 import java io IOException import org apache commons io FileSystemUtils public class DiskSp
  • 此 linq 查询是否在 for-each 循环的每次迭代上运行?

    在关于 SO 的另一个问题中 我用如下代码回答 并得到一条评论 即 LINQ 查询可能在 for each 的每次迭代中进行评估 真的吗 我知道 LINQ 查询在其项目被评估之前不会执行 因此这种迭代结果的方式似乎可以使其在每次迭代中运行
  • SQL / PHP PDO 选择随机行

    我希望能够随机选择一名未参加考试的学生 N 并回显姓名和主题 我怎样才能实现这个目标 query db gt prepare SELECT name FROM exams WHERE faced array array N query gt
  • 使用 GSON 解析 JSON

    我在使用 GSON 时遇到了一些问题 主要是从 JSON 反序列化为 POJO 我有以下 JSON events event id 628374485 title Developing for the Windows Phone event
  • 无法绑定 GridView 列中的项目列表

    我正在构建一个应用程序 向用户显示系列比赛的实时结果 我设置数据结构如下 Countries gt Leagues gt Matches特别是在 ViewModel 中 我创建了一个可观察的国家 地区集合 如下所示 private Obse
  • Silverlight - 在 XAML 中而不是在构造函数中设置 DataContext?

    如何在 XAML 中而不是在构造函数中设置 Grid 上的 DataContext 以下是我在构造函数中执行此操作的方法 LayoutRoot 是 XAML 中定义的 XAML 网格 this LayoutRoot DataContext
  • 使用共享静态 WCF 代理客户端有哪些陷阱?

    我正在考虑将共享 读取静态 WCF 代理客户端用于高吞吐量应用程序 我相信这样做可以提高性能 但我还没有对此进行基准测试 这个想法有一些严重的缺陷吗 从我的研究中 我可以看到存在处理故障状态的问题 目前尚不清楚该状态对其他待处理请求的影响流
  • Django/Python - 每秒更新数据库

    我正在努力用 Django 和 Python 创建一个基于浏览器的游戏 并且我正在尝试为我遇到的问题之一找到解决方案 本质上 每一秒都需要更新多个用户变量 例如 有一个货币变量应该每秒增加一定数量 随着你的升级和所有这些爵士乐而逐渐变大 我
  • 在 Kotlin 中编写 React Native Android 模块?

    React Native 文档提供了吐司模块 https facebook github io react native docs native modules android html用java编写的例子 同样的例子在 Kotlin 中是
  • JSON和Unity,在游戏上显示图像[重复]

    这个问题在这里已经有答案了 我有一个测验游戏应用程序 并且我有游戏上的图像 我想显示图像 文本显示得很好 但图像却不是 这是我的 JSON C 代码 点击这里图片 https i stack imgur com AEaFB png 调用我的
  • 为什么 Rails 不断发回 Set-Cookie 标头?

    我遇到了弹性负载均衡器和清漆缓存的问题 涉及 cookie 和会话在 Rails 和客户端之间混淆 问题的一部分是 rails 几乎在每个请求上都添加了一个带有会话 ID 的 Set Cookie 标头 如果客户端已经发送session i
  • 谜题:在四个反射墙内,激光束可以通过多少种方式击中目标

    你在一个长方形的房间里遇到敌人 你只有一把激光武器 房间里没有任何障碍物 墙壁可以完全反射激光束 然而 激光只能传播一定的距离 然后就变得毫无用处 如果它撞到角落 它会沿着它来的方向反射回来 这就是谜题的进行方式 您将获得自己所在位置和目标
  • 对汇编中的指针和值感到困惑

    我正在使用 MASM 汇编器 让我们看一下这段简短的代码 来自我读过的一本书 data var1 BYTE 10h code main proc mov esi OFFSET byteVal mov al esi AL 10h 我不太明白
  • 如何计算多个纬度和经度之间的距离?

    I want to calculate total distance between each points both contains lat and long these points are stored in local datab
  • 如何创建 jQuery 价格滑块

    我一直在尝试寻找教程 但没有成功 我并不是要求任何人为我做这项工作 而是更多地看看是否有人知道任何有用的东西 所以基本上我需要我的滑块具有最小值为零和动态设置的最大值 获取动态值不是问题 0 o 200 所以中间的 o 将是可点击的滑动元素
  • 使用 jQuery 从 URL 加载动态 div 内容

    我有一个 jQuery 搜索脚本 它使用选项卡让用户定义他们想要使用的搜索类型 当用户搜索时 会创建一个类似于 的 URLtype query 当您重新加载页面时 结果丢失的原因是它们不在文档源中 它们后来被添加到 DOM 中 我认为你有两
  • 如何在c#中仅在耳机的左声道和仅在耳机的右声道播放声音?

    我需要仅在耳机的左声道上播放声音 wav 文件 而另一个文件仅在耳机的右声道上播放 我是c 新手 请帮我解决这个问题 我认为仅 WPF 无法做到这一点 但您可能想查看一下NAudio http naudio codeplex com
  • Blazor.net UI 不渲染任何内容

    我正在开发 Blaor Net 应用程序 参考了互联网上的许多帖子 我面临的问题是 我想将代码从 UI 移动到单独的文件 以保持 razor 文件干净 可读和可理解 为此 我将 UI 端 C 代码保存到一个从 BaseComponent 继