我正在寻找一种将 Blazor 组件呈现为 HTML 字符串的方法,以便我能够将其用作模板引擎,在我的 Web 应用程序中创建和发送电子邮件。想法?
我正在创建一个 blazor 服务器端应用程序,但在两个自定义组件之间绑定值时遇到问题。
我已经查看了有关 bind 或 @bind 应该如何工作的不同示例,但我无法弄清楚有关此事的最新信息是什么。
给定一个模型类 User:
public class User
{
[Mapping(ColumnName = "short_id")]
public string ShortId { get; set; }
public User()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我想构建一个表单,显示该用户的所有属性并将它们输入到输入中,以便可以对其进行编辑并最终保存到数据库中。
我的表单(父组件)如下所示:
<div class="edit-user-form">
<AnimatedUserInput TbText="@User.ShortId" Placeholder="MHTEE Id"/>
<button class="btn btn-secondary" @onclick="Hide" style="{display:inline-block;}">Back</button>
<button class="btn btn-primary" @onclick="SaveUser" style="{display:inline-block;}">Save</button>
</div>
@code {
[Parameter] public vUser User { get; set; }
[Parameter] public Action Hide { get; set; }
bool _error = false;
void SaveUser()
{
ValidateUserData();
}
void ValidateUserData()
{
_error = …Run Code Online (Sandbox Code Playgroud) 我今天通过以下命令行安装了 Blazor WebAssembly 示例项目 (WeatherForecast):
dotnet new blazorwasm --hosted -o ProjectName
Run Code Online (Sandbox Code Playgroud)
我在调试模式下通过 Visual Studio 2019 安装后直接启动了 SPA。浏览器是:Chrome。浏览器显示应用程序,但是当我选择导航菜单“获取数据”时,什么也没有发生。Chrome 显示 1 个错误:
Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: The provided ContentType is not supported; the supported types are 'application/json' and the structured syntax suffix 'application/+json'.
System.NotSupportedException: The provided ContentType is not supported; the supported types are 'application/json' and the structured syntax suffix 'application/+json'.
at System.Net.Http.Json.HttpContentJsonExtensions.ValidateContent (System.Net.Http.HttpContent content) <0x2e87f38 + 0x0009a> in <filename unknown>:0
at System.Net.Http.Json.HttpContentJsonExtensions.ReadFromJsonAsync[T] (System.Net.Http.HttpContent content, System.Text.Json.JsonSerializerOptions options, System.Threading.CancellationToken cancellationToken) <0x2e87d30 + …Run Code Online (Sandbox Code Playgroud) asp.net asp.net-web-api blazor blazor-client-side blazor-webassembly
我读了这篇文章,但仍然遇到问题:
我有我的 Blazor WebAssembly 站点,其中有一个静态 index.html 文件,可以以正常方式引导 Blazor。在其中<head>,我有<link href="css/app.min.css" rel="stylesheet" />。该文件是使用部署时的 Dockerfile RUN 步骤从 SCSS 构建的。
根据该问题,我不需要缓存清除 URL,因为 Blazor 会根据需要自动请求一个新的 URL。然而,当我部署站点并在 Firefox 中打开它时,我得到了旧样式,并在 Firefox 开发人员工具网络选项卡中看到 app.min.css 是从磁盘缓存中检索的。我必须按 Ctrl+F5 才能获取新样式。
那么这个链条到底出了什么问题呢?在我看来,每次部署时我仍然需要 CSS 的缓存清除 URL。 需要进行哪些设置才能在站点二进制文件更改时下载我的 CSS(按照 Steve Sanderson 在该问题中建议的方式)?
如何在 SaveItem 事件中添加自定义验证消息(最好不要使用数据注释)?它应该显示在“ValidationMessage For=”上下文中。
@using System.ComponentModel.DataAnnotations
@page "/edititem"
<EditForm Model="@model" OnSubmit="@Submit" OnValidSubmit="@SaveItem">
<DataAnnotationsValidator />
<ValidationSummary />
<InputText id="ItemName" @bind-Value="@model.ItemName" />
<ValidationMessage For="@(() => model.ItemName)" />
<button type="submit">Submit</button>
</EditForm>
@code {
ItemModel model = new ItemModel();
private void Submit()
{
}
private void SaveItem()
{
}
public class ItemModel
{
[Required]
public string ItemName{ get; set; }
}
}
Run Code Online (Sandbox Code Playgroud) 我想通过 Blazor 技术开发一个 SPA 项目。
由于调试 Blazor Web 程序集应用程序的复杂性,我想先将其创建为服务器端应用程序,然后再将其更改为 Web 程序集应用程序应用程序。
这可能吗?如果是这样,在我成功使服务器端 Blazor 项目工作后,我需要进行哪些更改才能获得与 WebAssembly 项目相同的功能?
另外,在我的服务器端 Blazor 项目中是否有任何我应该避免的特定方法或技术,因为它们在使用 WebAssembly 时没有等效项?
问题出在客户端appsettings.json
appsettings.json位于目录内wwwroot。可以在应用程序内访问该文件,但是该设置不能被应用程序服务的 Azure Portal 应用程序设置覆盖。这意味着,在将应用程序部署到 Web 应用服务上的 Azure 门户中后,我的配置设置不适用于应用程序设置的变量。
这是 中的代码Progam.cs,它工作正常并从文件中读取配置,但忽略 Azure 上的 Web 应用服务的配置设置。
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
//Add a named httpClient and set base Address and Default Request Headers
builder.Services.AddHttpClient("SOME_WEB_URL", client => // SOME_WEB_URL is defined in the appsettings.json or in the Azure App Service configuration (Application Settings)
{
client.BaseAddress …Run Code Online (Sandbox Code Playgroud) azure azure-web-app-service blazor blazor-client-side blazor-webassembly
如果我在 Blazor 中遗漏了一些明显的内容,请原谅我,但是由于 dll 像 javascript 文件一样存在于浏览器中,用户是否可以下载 dll 文件并通过反编译文件和/或运行它们来查看执行代码在浏览器之外?
如果开发人员没有意识到他们的库代码像他们的 javascript 代码一样可见,这似乎会带来一个非常明显的安全问题。
尝试从 Blazor Wasm 调用我的 AspNetCore Restful API 时,出现“TypeError: Failed to fetch”错误。我可以从邮递员那里调用它,它工作正常。
我的环境: Microsoft Visual Studio Community 2019 Preview Version 16.6.0 Preview 3.0
客户端:Blazor Wasm 服务(dotnetstandard 2.1)
重要用途:
using Microsoft.AspNetCore.JsonPatch;
using Newtonsoft.Json;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;
Run Code Online (Sandbox Code Playgroud)
父命名空间和类省略 _httpClient 注入父类
public async Task<MyDto> UpdatePartialAsync(Guid primaryId, ObjectForUpdateDto objectForUpdateDto)
{
MyDto dtoFromApi = null;
var patchDoc = new JsonPatchDocument<ObjectForUpdateDto>()
.Replace(o => o.Name, objectForUpdateDto.Name)
.Replace(o => o.Description, objectForUpdateDto.Description)
var uri = $"MyUri/myResources/{primaryId}";
try …Run Code Online (Sandbox Code Playgroud) httpclient json-patch asp.net-core .net-standard blazor-client-side
有没有办法让 Blazor Webassembly.razor在更改/更新并保存文件时重新编译它们?我已经习惯了这种情况发生在传统的 ASP.NET Core MVC 剃刀视图以及像 Angular 这样的客户端框架中。在 ASP.NET Core MVC > 3.0 中,类似的
services.AddRazorPages().AddRazorRuntimeCompilation();方法可以解决问题,但我找不到 Blazor 的任何内容。
当我需要停止整个应用程序并重新启动它以查看最新更改时,这很烦人。默认情况下,Main新 Blazor 应用程序的方法如下所示
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
}
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?Blazor WASM 还没有出现吗?dotnet watch dotnet build如果这是一个解决方案,我对一些有点hacky的东西持开放态度。
blazor ×8
.net-core ×2
asp.net-core ×2
c# ×2
asp.net ×1
azure ×1
css ×1
httpclient ×1
json-patch ×1