使用标签标签助手本地化

时间:2017-08-09 13:22:08

标签: c# html localization asp.net-core-tag-helpers

Ttextinput.cshtml

@inject Microsoft.AspNetCore.Mvc.Localization.IViewLocalizer localizer
@model string
<div class="form-group col-sm-6" >
  <label asp-for=@(localizer[@Model]) class=" control-label form-label "></label>
  <div class="">
    <input asp-for="@Model" class="form-control form-textbox"/>
    <span asp-validation-for="@Model" class="text-danger "></span>
  </div>
</div>


"workflowformpage.cshtml"
using REU.ViewModelContracts
@model IWorkflowViewModel
<fieldset class=" form-group form">

        @if (Model.GetType().BaseType == typeof(AssignResultCollectionViewModel))
        {

            @Html.Partial("AssignResultCollection", Model);

        }
        else
        {
            foreach (var propertyInfo in Model.GetDisplayPropertyInfos())
            {
                @Html.Editor(propertyInfo.Name, null, Model.GetQualifiedPropertyName(propertyInfo.Name))
                //break;
            }
        }


    </fieldset>

我有一个显示表单的视图。文本框的标签来自我使用“”的模型,它运行良好并提供了价值,但现在我想用标签实现本地化,我试过这样的事情

<label asp-for="@localizer[@Model]" class=" control-label form-label ">

不给我价值。任何人都可以建议如何解决这个问题?

<label asp-for="@localizer[@Model]" class=" control-label form-label "> 
</label>

1 个答案:

答案 0 :(得分:0)

asp-for属性旨在包含页面模型中存在的C#属性的名称,并不意味着包含要显示的字符串。

例如:

public class MyPageModel
{
    public string Email {get;set;}
}

查看:

@model MyPageModel
<label asp-for="Email"></label>

这将显示您在控制器中传递的MyPageModel.Email属性的内容。因此,在asp-for中传递本地化字符串确实没有意义。

为了完成您的示例,我假设您的@Model变量是一个字符串。你可以用这个:

@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
<label>@Localizer[@Model]</label>