如何使用Localizer本地化asp动作

时间:2016-09-15 15:20:22

标签: c# razor asp.net-core asp.net-core-mvc

我正在使用多种语言构建网站,并希望根据语言自定义asp-action。我们的想法是,英文版本中的网址类似于/en/feedback,而德语中的网址应为/de/gaestestimmen

我尝试了以下内容:

<a asp-controller="Home" 
   asp-action="@Localizer["navKontakt"]" 
   asp-route-lang="@CultureInfo.CurrentCulture.TwoLetterISOLanguageName">
     @Localizer["navFeedback"]
</a>

Localizer在第二个实例中返回正确的文本,但不在asp-action中返回 - 它返回:

Microsoft.AspNetCore.Mvc.Localization.LocalizedHtmlString”而不是预期的字符串。

如果我只是输入asp-action="Feedback",它就可以正常工作。

任何人都知道如何才能使这项工作?

2 个答案:

答案 0 :(得分:1)

找到答案。由于本地化程序返回LocalizedHtmlString,它是一个对象而不是一个字符串,我必须添加.Value来获取值作为字符串。

asp-action="@Localizer["navKontakt"].Value"

答案 1 :(得分:0)

看起来像是报价问题。尝试使用单引号切换属性值的双引号:

<a asp-controller="Home"
    asp-action='@Localizer["navKontakt"]'
    asp-route-lang="@CultureInfo.CurrentCulture.TwoLetterISOLanguageName">
    @Localizer["navFeedback"]
</a>