【发布时间】:2019-09-18 06:20:29
【问题描述】:
我们有一个基本的剃须刀页面应用程序。我们想添加 Blazor 组件。通过复制 04/16 Blazor 更新视频中的步骤或使用 Blazor 文档,我们可以毫无问题地使其工作。但是,一旦我们将 Blazor 组件添加到 Razor 页面,我们所有的 asp 页面链接都将不再工作。地址栏中的 url 发生了变化,但我们仍然在同一页面上。启动文件如下:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
});
services.AddRazorPages()
.AddNewtonsoftJson();
services.AddServerSideBlazor();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapBlazorHub();
});
}
如果有人可以向我指出一个包含 Razor 页面和 Blazor 组件的多页教程,我相信我们可以解决这个问题!提前致谢!
blazor 组件工作正常。
<a asp-page="./Index">Home</a><br />
<div id="Counter"> @(await Html.RenderComponentAsync<Counter>())
<script src="~/_framework/blazor.server.js">
</script>
</div>
Microsoft 文档状态 - 将组件集成到 Razor Pages 和 MVC 应用程序中 将组件与现有的 Razor Pages 和 MVC 应用程序一起使用。无需重写现有页面或视图即可使用 Razor 组件。当页面或视图被渲染时,组件会同时被预渲染†。 - https://docs.microsoft.com/en-us/aspnet/core/blazor/components?view=aspnetcore-3.0
【问题讨论】:
-
我认为您必须展示“将 Blazor 组件添加到 Razor 页面”的实际含义。当您无法发布真实代码时创建一个模型(但请确保在发布之前对其进行编译)。
-
是的,Blazor 组件能够进入 Razor 页面。请参阅下面的 sn-p。我们遇到的问题是 asp 页面链接停止工作。 Blazor 组件工作正常。 首页@(await Html.RenderComponentAsync
()) -
将组件集成到 Razor Pages 和 MVC 应用程序中 将组件与现有的 Razor Pages 和 MVC 应用程序一起使用。无需重写现有页面或视图即可使用 Razor 组件。当页面或视图被渲染时,组件会同时被预渲染†。 - docs.microsoft.com/en-us/aspnet/core/blazor/…
-
我可以确认您的症状。调用 Blazor 组件后,SignalR 集线器将接管,并且路由成为 Blazor 的。这就是为什么我怀疑这是受支持的模式。
-
@Henk Holterman,通过 Razor 页面中使用的 html 帮助程序 RenderComponentAsync 可以在 Blazor 服务器端进行预渲染。我不知道启用预渲染的另一种方法。如果您希望嵌入单个 Razor 组件或整个应用程序,则必须使用 html 助手 RenderComponentAsync 方法。
标签: blazor