Estou usando o blazor 3.1 na versão mais recente do VS 2019.
até agora eu sou capaz de localizar os rótulos das páginas (título, campos da tabela etc.)
Na ListEmployee.razor
página, localizo o cabeçalho da tabela, etc., e na AddEmplyeeValidation.razor
página, localizo os rótulos dos formulários, mas tenho problemas para localizar a mensagem de validação.
para mensagem de Employee.cs
validação para mensagem de validação são definidas neste arquivo e Resources/Data
pasta com o nome definido como Data.Employee.ar.resx
e Data.Employee.ar.resx
isso não está funcionando
using System.ComponentModel.DataAnnotations;
namespace BlazorSPA1.Data {public class Employee {[MaxLength (50)] public string Id {get; conjunto; }
[Required (ErrorMessage ="Name is RRRequired")]
[StringLength(20, ErrorMessage = "Name is too long.")]
public string Name { get; set; }
[Required]
[StringLength(20)]
public string Department { get; set; }
[MaxLength(100)]
public string Designation { get; set; }
[MaxLength(100)]
public string Company { get; set; }
[MaxLength(100)]
public string City { get; set; }
}
}
Como posso como mensagem de validação de arquivos de recursos com base no idioma para o formulário Adicionar funcionário.
@page "/addemployeeValidation"
@inject NavigationManager NavigationManager
@inject IEmployeeService EmployeeService
@inject IStringLocalizer<AddEmployeeValidation> L
<h2>Create Employee</h2>
<hr />
<EditForm Model="@employee" OnValidSubmit="@CreateEmployee">
<DataAnnotationsValidator />
<ValidationSummary />
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label for="Name" class="control-label">@L["Name"]</label>
<input for="Name" class="form-control" @bind="@employee.Name" />
<ValidationMessage For="@(()=> employee.Name)" />
</div>
<div class="form-group">
<label for="Department" class="control-label">@L["Department"]</label>
<input for="Department" class="form-control" @bind="@employee.Department" />
</div>
<div class="form-group">
<label for="Designation" class="control-label">@L["Designation"]</label>
<input for="Designation" class="form-control" @bind="@employee.Designation" />
</div>
<div class="form-group">
<label for="Company" class="control-label">@L["Company"]</label>
<input for="Company" class="form-control" @bind="@employee.Company" />
</div>
<div class="form-group">
<label for="City" class="control-label">@L["City"]</label>
<input for="City" class="form-control" @bind="@employee.City" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Save" />
<input type="button" class="btn" @onclick="@Cancel" value="Cancel" />
</div>
</div>
</div>
</EditForm>
@code {
Employee employee = new Employee();
protected async Task CreateEmployee()
{
await EmployeeService.CreateEmployee(employee);
NavigationManager.NavigateTo("listemployees");
}
void Cancel()
{
NavigationManager.NavigateTo("listemployees");
}
}
Eu li alguns artigos e tentei poucas coisas, mas nada parece estar funcionando
Código em Startup.cs`
services.AddServerSideBlazor (options => options.DetailedErrors = true);
services.AddLocalization(options => options.ResourcesPath = "Resources");
var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("ar") };
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("en");
options.SupportedUICultures = supportedCultures;
});
Estou usando o exemplo a seguir para Localização, ele não mostra como localizar a mensagem de erro https://www.c-sharpcorner.com/article/localization-in-blazor-server/
Imagem da estrutura de pastas para referência
Exemplo de arquivo de recurso para a versão em inglês da mesma maneira que eu tenho o arquivo em árabe também
Na captura de tela abaixo, o nome do campo está sendo retirado do arquivo de recursos, mas a mensagem de validação é exibida apenas em inglês, pois não está funcionando
Isso já foi perguntado antes:
Como adicionar a localização do ViewModel ao Blazor?
Sugeri que usar o FluentValidation seria uma abordagem melhor. Aqui está um link para meu repositório do Github que demonstra como ele poderia funcionar:
https://github.com/conficient/BlazorValidationLocalization
fonte
Eu não tentei isso!
Nos documentos oficiais do núcleo do asp.net, há uma seção sobre como localizar
DataAnnotations
Talvez você encontre algumas pistas lá .fonte