要在asp.net核心预览版3上禁用服务器端预渲染,您只需注释<input type="text" class="form-control" placeholder="Enter value" id="txtvalueRef" name="valueRef" #valueRef="ngModel" pattern="[0-9]*">
<div [hidden]="valueRef.valid || valueRef.pristine" class="alert alert-danger">
<div [hidden]="!valueRef.hasError('pattern')">Items should be only numbers</div>
</div>
。
自从asp.net核心预览版4开始,当您注释此行时,该页面将不呈现,并且在主要组件@(await Html.RenderComponentAsync<MyApp>())
上,标记@page "/"
保持空白。
那么,如何禁用服务器端预渲染?
答案 0 :(得分:2)
最后在github中找到了cores-system的解决方案 来源:https://github.com/aspnet/AspNetCore/issues/9584#issuecomment-485257261
app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub().AddComponent<App>(selector: "app");
endpoints.MapFallbackToFile("index.html"); // or - endpoints.MapFallbackToPage("/_Host");
});
希望这行得通...
答案 1 :(得分:0)
也许您应该从中删除<Reference Include="Microsoft.AspNetCore.Mvc.Components.Prerendering" />
.csproj文件。
希望这对您有帮助...
此:@(await Html.RenderComponentAsync<MyApp>())
代码段是“将有状态的交互式组件添加到 Razor页面或视图的一种方法。当页面或视图呈现时,组件将随其一起呈现。”
这绝对不是您建议的启用服务器端预渲染的配置。
服务器端预渲染是在AddServerSideBlazor方法中配置的;更具体地说,通过此方法调用:
// We explicitly take over the prerendering and components services here.
// We can't have two separate component implementations coexisting at the
// same time, so when you register components (Circuits) it takes over
// all the abstractions.
services.AddScoped<IComponentPrerenderer, CircuitPrerenderer>();
我猜想现在不可能禁用服务器端预渲染。它被强加给我们。但是,您应该进行研究,并发现真相。也许我写的都是胡说八道...