- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个完全可用的 Blazor 服务器端项目和一个 .NET Core 3 MVC 项目,它们都在同一个解决方案中。我现在正尝试在我的 MVC 项目中使用 Blazor 项目中的组件。
我已经设法让组件呈现在 MVC 页面上,但是单击 Blazor 组件上的按钮不会触发组件的 onclick 事件,而我只是导航到 https://localhost:44341/ ?
我不清楚我需要在 MVC 解决方案中进行哪些更改才能使其正常工作?官方文档talks about using components in and MVC project在这个 video chat with Dan Roth 中提到了它,但都没有详细说明如何实现它。
谁能告诉我如何将服务器端 Blazor 改造为 MVC 项目的完整步骤(或给我举个例子)?
我的 Blazor 项目仍然具有标准模板的 Counter 组件,因此我尝试通过引用 Blazor 项目将其添加到我的 MVC 解决方案,然后将其添加到我的 index.cshtml 文件中:
<div id="Counter">
@(await Html.RenderComponentAsync<Counter>())
</div>
呈现正确但按钮点击不起作用。
我已将 JS 文件添加到 MVC 应用程序_Layout 页面:
<script src="_framework/blazor.server.js"></script>
在 MVC 项目的 Startup.cs 文件中打开服务器端 Blazor:
services.AddServerSideBlazor();
我还在 MVC 项目中添加了 Pages 和 Shared 目录,并复制了 _Imports 和 MainLayout 文件 - 不确定是否需要这样做。
当这样做不起作用时,我尝试从所有 Blazor 模板(客户端、客户端托管和服务器端)启动新项目以寻找线索,但所有这些示例都设置为完整的 SPA单个 Blazor 入口点(App
文件)托管在 .html 文件中,而我想在许多不同的现有 MVC 页面上呈现 Blazor 组件。
然后,我尝试将这些项目的一部分(以及我工作的 Blazor 项目的一部分)添加到 MVC 项目中,但无法使其完全运行。
我尝试关注 the answer here也一样,但这是将 Blazor 组件文件添加到 MVC 项目中,而我的 Blazor 文件目前(大部分)在不同的项目中。
services.AddServerSideBlazor();
在 MVC 应用程序的 Startup.cs 中。还有什么需要吗?AspNetCore.Routing
,如果我只将组件放在现有的 MVC 页面上(即我不会有 Blazor 页面,只有 Blazor 组件),我还需要切换到 Core 3 的端点路由吗? <app>@(await Html.RenderComponentAsync<App>())</app>
来 self 的 MVC 项目中某处的 _Host.cshtml 的行?最佳答案
我现在已经弄清楚了。在我的问题中描述的所有试验和错误之后,解决方案结果涉及的代码少得惊人。
下面的答案假定您的解决方案中有一个有效的服务器端 Blazor 项目,并且正尝试在同一解决方案的单独 MVC 项目中使用该项目的组件。我在 VS2019 中使用 Core 3 Preview 5 完成了此操作。
请参阅页面底部或同一项目中 MVC 和 Blazor 示例的链接。
您只需添加对 blazor 项目的引用:
<ProjectReference Include="..\MyClient.Web.Blazor\MyClient.Web.Blazor.csproj" />
将基本 url 添加到头部:
<head>
<meta charset="utf-8" />
<base href="~/" />
添加对 Blazor JS 脚本的引用
<script src="_framework/blazor.server.js"></script>
(这实际上并不存在于您的本地文件系统中,Blazor 在应用到达浏览器时自动将其整理出来)
这才是真正的工作完成的地方
在ConfigureServices
方法中添加:
services.AddServerSideBlazor();
然后我将我的配置切换到新样式的 Core 3 配置(因此不再使用 AddMvc
方法):
services.AddControllersWithViews()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
services.AddRazorPages();
然后最终让这一切为我工作的改变是在 Configure(IApplicationBuilder app, IWebHostEnvironment env)
方法中切换到 Core 3 的端点路由:
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
endpoints.MapBlazorHub();
});
//app.UseMvc(routes =>
//{
// routes.MapRoute(
// name: "MyArea",
// template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
// routes.MapRoute(
// name: "default",
// template: "{controller=Home}/{action=Index}/{id?}");
//});
注释掉的代码显示了我使用的旧式路由。我认为是 endpoints.MapBlazorHub();
的缺失导致了我的按钮点击问题
无需对 Blazor 项目进行任何更改即可实现此功能。
完成上述所有操作后,让您的组件呈现在 MVC 页面上所需要做的就是添加
@(await Html.RenderComponentAsync<YourComponent>())
这应该适用于 MVC 页面和 Razor 页面。
上述更改是我需要进行的所有更改才能使其正常工作。有一个 known issue with Core 5一旦您导航到上面有 Blazor 组件的 MVC 或 Razor 页面,路由将不再有效,直到页面刷新 - URL 将在浏览器的地址栏中更改,但不会发生导航。
我现在运行的是 Preview 6,我可以确认路由问题现在已从 Preview 6 开始修复。
Chris Sainty 在此处有一个服务器端 Blazor 组件添加到现有 MVC 项目 的示例:Using Blazor Components In An Existing MVC Application ( source here )
关于c# - 将服务器端 Blazor 添加到现有 MVC 核心应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56241125/
Linux 有许多跨(假设是 2 个)CPU 内核执行的线程和进程。我希望我的单线程 C/C++ 应用程序成为 CPU0 上的唯一线程。我如何“移动”所有其他线程以使用 CPU1? 我知道我可以使用
我有一个类似于下图的数据库表 Table with 2 columns (UserId and value) 我将传递 UserId 和 2 个字符串。例如:userId: 1, key1: h1,
我想在我的新项目中使用 ASP.NET Core,因为我听说它更快。但是,该项目将使用广泛的数据库访问功能,Entity Framework Core 不支持其中一些功能。我想知道,是否可以使用 En
我已经使用 EntityFrameworkCore.SqlServer 2.0 开发了 asp .net core wep api 2.0 应用程序。它是使用数据库优先方法开发的。当尝试使用 dbco
我已经阅读了很多关于这个主题的文章,但我仍然无法处理这个问题。对不起,如果它是重复的,无论如何! 所以基本上,我正在从头开始构建一个 Angular 应用程序,并且我想按照最佳约定来组织我的代码。我有
我对MPI还是陌生的,所以如果这是一个琐碎的问题,请原谅我。我有一个四核CPU。我想运行一个在单个内核上使用两个进程的OpenMPI C++程序。有什么办法吗?如果是这样,那又如何?我提到了this
下面是一个传播异常处理机制的类问题,所需的输出是异常。任何人都可以解释为什么输出是异常,在此先感谢。 Class Question { public void m1() throws Excep
我想打印每个获得 CPU 时间片的进程的 name 和 pid。可能吗? 最佳答案 对于单个流程,您可以在以下位置获取此信息: /proc//stat 第14和第15个字段分别代表在用户态和内核态花费
我想知道是否可以识别具有特定 thread-id 的线程使用的物理处理器(核心)? 例如,我有一个多线程应用程序,它有两 (2) 个线程(例如,thread-id = 10 和 thread-id =
我有一个需要身份验证的 Solr 核心。假设我有一个用户,密码为password。当我现在尝试在控制台中创建一个 Solr 核心时 bin\solr create -c test 我收到 HTTP 错
我想为与使用它的项目不同的类库中的第二个和后续数据库创建迁移。有皱纹。我永远不会知道连接字符串,直到用户登录并且我可以从目录数据库 (saas) 中获取它。 对于目录数据库,我使用了来自 this 的
我想为一种可以产生 GHC Core 的简单语言创建一个前端。然后我想获取这个输出并通过正常的 GHC 管道运行它。根据this page , 不能直接通过 ghc 命令实现。我想知道是否有任何方法可
阅读文档,我构建了 2 个使用 BLE 连接 2 个 iDevices 的应用程序。 一个设备是中央设备,另一个是外围设备。 Central在寻找Peripheral,当找到它时,探索它的服务和特性,
在我的网络应用程序中,我对长时间运行的任务进行了操作,我想在后台调用此任务。因此,根据文档 .net core 3.1 Queued background tasks我为此使用这样的代码: publi
Solr 1.4 Enterprise Search Server 建议对核心副本进行大量更新,然后将其换成主核心。我正在按照以下步骤操作: 创建准备核心:http://localhost:8983/
它们是否存在,如果存在,文档和代码在哪里? 最佳答案 它们位于 Git 的 test 目录中。 https://github.com/jquery/jquery/tree/master/test 关于
我有一个 Lisp (SBCL 1.0.40.0.debian) 应用程序 (myfitnessdata),它使用以下代码来处理命令行参数: (:use :common-lisp) (:export
Core是GHC的中间语言。阅读Core可以帮助你更好地了解程序的性能。有人向我索要有关阅读 Core 的文档或教程,但我找不到太多。 有哪些文档可用于阅读 GHC Core? 这是我迄今为止发现的内
我有一个核心 WebJob 部署到 Azure Web 应用程序中。我正在使用WebJobs version 3.0.6 . 我注意到,WebJob 代码不会立即拾取对连接字符串和应用程序设置的更改(
我有一个在内部构造和使用 SqlConnection 类的第三方库。我可以从该类继承,但它有大量重载,到目前为止我一直无法找到合适的重载。我想要的是将参数附加到正在使用的连接字符串。 有没有办法在 .
我是一名优秀的程序员,十分优秀!