2016-09-15 92 views
1

我正在构建多种语言的webstie,并希望根据语言定制asp-action。这个想法是,英文版的URL类似于/en/feedback,而在德文版中应该是/de/gaestestimmen如何使用本地化器本地化asp动作

我曾尝试以下:

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

航向返回二审正确的文本,而不是为asp-action - 那里返回:

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

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

任何人有任何想法如何使这项工作?

回答

0

看起来像引号问题。尝试用单引号替换属性值的双引号:

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

找到了答案。由于本地化程序会重新定位一个LocalizedHtmlString,它是一个对象,但不是一个字符串,所以我必须添加.Value以将值作为字符串来获取。

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

这类似于[这个问题](https://stackoverflow.com/questions/39792066/net-core-localization-view-iviewlocalizer-inside-linq-expression)。我发现这个语法不一致,我怀疑它是否是通过设计。 –