2016-09-15 50 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)。我發現這個語法不一致,我懷疑它是否是通過設計。 –