gpt4 book ai didi

c# - .Net Core 本地化 View : IViewLocalizer inside Linq expression

转载 作者:太空狗 更新时间:2023-10-30 01:01:19 25 4
gpt4 key购买 nike

我在 .net 核心中编写 mvc 应用程序,我有本地化问题,我不知道如何将 IViewLocalizer 添加到我的 GridView 。这是我的代码:

@using NonFactors.Mvc.Grid;
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model IEnumerable<WeegreeEmployeeFormsCore.Models.Employee>

@(Html
.Grid(Model)
.Build(columns =>
{
columns.Add(model => model.Name).Titled(Localizer["Name"]).Sortable(true).Filterable(true);
columns.Add(model => model.Surname).Titled(Localizer["Surname"]).Sortable(true).Filterable(true);
columns.Add(model => model.EmploymentDate).Titled(Localizer["Hired"]).Sortable(true).Filterable(true);
columns.Add(model => model.Country).Titled(Localizer["Country"]).Filterable(true).Sortable(true).Filterable(true);
columns.Add(model => model.EmploymentForm).Titled(Localizer["EmploymentForm"]).Filterable(true);
columns.Add(model => $"<a href=\"{Url.Action("Edit", "Form")}/{model.EmployeeId}\">{Localizer["Edit"]}</a>").Encoded(false);
columns.Add(model => $"<a href=\"{Url.Action("Details", "Form")}/{model.EmployeeId}\">Details</a>").Encoded(false);


})
.Pageable(pager =>
{
pager.PagesToDisplay = 10;
pager.CurrentPage = 1;
pager.RowsPerPage = 10;
})
.Sortable()
.Empty("No data found")

)

当我使用 {} 插入表达式 model.EmployeeId 时,它起作用了 - 链接起作用了,但是当我想使用 Localizer 来获取题词时 Edit/Edytuj/змінити 等。而不是我在我看来得到这个: Microsoft.AspNetCore.Mvc.Localization.LocalizedHtmlString

最佳答案

那是因为 IViewLocalizer["Foo"] 返回一个 LocalizedHtmlString而不是字符串。因此,当您将其包含在字符串插值表达式中时,它会调用其 ToString 方法。由于 ToString 尚未在该类中重新定义,默认的 Object.ToString() 实现返回类型名称:

var foo = Localizer["Foo"].ToString();
//foo gets assigned "Microsoft.AspNetCore.Mvc.Localization.LocalizedHtmlString"

Razor 知道如何在呈现页面时处理 LocalizedHtmlString 实例,因此这会按预期呈现:

<p>Hello @Localizer["World"]</p>
//renders <p>Hello World</p>

如果您想手动连接本地化字符串,则需要确保获得 LocalizedHtmlString.Value属性:

@{
var text = $"Hello {Localizer["World"].Value}";
}
<p>@text</p>
//renders <p>Hello World</p>

将其与不调用 .Value 的方法进行比较:

@{
var text = $"Hello {Localizer["World"]}";
}
<p>@text</p>
//renders <p>Hello Microsoft.AspNetCore.Mvc.Localization.LocalizedHtmlString</p>

关于c# - .Net Core 本地化 View : IViewLocalizer inside Linq expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com