2

我知道这很愚蠢,我是一名 vb.net 开发人员,需要知道为什么在 NopCommerce 中使用 @T 以及它的好处/用途是什么?

例如,我们可以使用下面的代码进行解释.. 我正在尝试做 @T("Forum.Forums").ToUpper() 并且它会抛出一个错误..

CS1061:“Nop.Web.Framework.Localization.LocalizedString”不包含...的定义

@model MenuModel  @using Nop.Web.Models.Common;

<ul class="top-menu">
    @Html.Widget("header_menu_before")
    <li><a href="@Url.RouteUrl("HomePage")">@T("HomePage")</a></li>
    @if (Model.RecentlyAddedProductsEnabled)
    {
        <li><a href="@Url.RouteUrl("RecentlyAddedProducts")">@T("Products.NewProducts")</a>
        </li>
    }
    <li><a href="@Url.RouteUrl("ProductSearch")">@T("Search")</a> </li>
    <li><a href="@Url.RouteUrl("CustomerInfo")">@T("Account.MyAccount")</a></li>
    @if (Model.BlogEnabled)
    {
        <li><a href="@Url.RouteUrl("Blog")">@T("Blog")</a></li>
    }
    @if (Model.ForumEnabled)
    {
        <li><a href="@Url.RouteUrl("Boards")">@T("Forum.Forums")</a></li>
    }
    <li><a href="@Url.RouteUrl("ContactUs")">@T("ContactUs")</a></li>
    @Html.Widget("header_menu_after") </ul>
4

1 回答 1

3

它用于本地化。您也可以在 Orchard CMS 中找到相同的模式。

NOP Commerce 将用于本地化的资源(键值对)存储在数据库中。在访问时,它会缓存它们并使用它们的引擎来访问这些资源。

@T 只是一种在应用程序中使用不同语言时访问资源的方法。

为了消除我提到的错误,我们需要使用 Convert.ToString(T("whatever")).ToUpper() 并且它不会再次抛出该错误

于 2013-10-26T20:06:54.923 回答