如何在Asp.net MVC布局中使用资源文件

时间:2017-07-06 10:09:29

标签: asp.net-mvc

我使用multi-language website中的资源文件实施了Asp.net MVC。 一切正常,但问题出在layout。如何使用view-bag在我的布局中使用动态资源?

我需要在我的布局中的某个地方写这样的东西,但我不知道这样做的正确方法是什么:

@{ var langu = ViewBag.lang;}
@Resources.langu.App_Name;

当然有错误。

如果需要,这是我的布局页面:

<!DOCTYPE html>
<html>
<head>
    .....
</head>

<body>
    <div class="preloader">
        <div class="spinner">
            <div class="double-bounce1"></div>
            <div class="double-bounce2"></div>
        </div>
    </div>

    <!-- Header
    ============================================ -->
    <div class="header">

        <div class="container  relativesaz">
            <div class="row">
                <div class="col-sm-12">
                    <!-- Navbar Header -->
                    <div class="navbar-header">
                        <!-- Menu Toggle -->
                        <button class="menu-toggle"><i class="fa fa-navicon"></i></button>
                        <!-- Logo -->
                        <a class="iconvrf logo navbar-brand relativesaz" href="" target="_blank">

                            <img src="" alt="" />
                            <span class="fontsmall">

                            </span>
                        </a>
                    </div>
                    <!-- Menu -->
                    <div class="menu">
                        <nav>
                            <ul>
                                <li class="active"><a href="#hero-area">Home</a></li>
                                <li><a href="#about-area">About</a></li>
                                <li><a href="#feature-area">Feature</a></li>
                                <li><a href="#pricing-area">Description</a></li>
                                <li><a href="#screenshot-area">Screenshot</a></li>
                                <li><a href="#team-area">AW </a></li>
                                <li>
                                    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
                                        @ViewBag.ActiveMenu

                                        <span class="caret"></span>
                                    </button>
                                        <ul class="dropdown-menu">
                                            <li>
                                                <ul>
                                                    <li><a class="colorblack" href="@Url.Action("ru", "Home")">Russian</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("cn", "Home")">Chinese</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("jp", "Home")">Japanese</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("nl", "Home")">Dutch</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("dk", "Home")">Danish</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("de", "Home")">German</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("fr", "Home")">French</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("en", "Home")">English </a></li>
                                                </ul>
                                            </li>
                                            <li>
                                                <ul>
                                                    <li><a class="colorblack" href="@Url.Action("tr", "Home")">Turkish</a></li>

                                                    <li><a class="colorblack" href="@Url.Action("th", "Home")">Tahi</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("sv", "Home")">Swedish</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("pt", "Home")">Portuguese</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("no", "Home")">Norwegian</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("kr", "Home")">Korean</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("es", "Home")">Spanish</a></li>
                                                    <li><a class="colorblack" href="@Url.Action("it", "Home")">Italian </a></li>
                                                </ul>
                                            </li>
                                        </ul>
                                </li>
                            </ul>
                        </nav>
                    </div>
                </div>
            </div>
        </div>
    </div>
    @RenderBody()
    <script src="~/Scripts/plugins.js"></script>
    <script src="~/Scripts/main.js"></script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您可以直接使用resx而不是viewbag,如下所示:

<强>解决方案

布局和两个resx。

Solution

<强> _Layout.cshtml

<header>
  <div class="content-wrapper">
    <div class="float-left">
      <p class="site-title">
        @if (System.Globalization.CultureInfo.CurrentCulture.ToString() == "fa-IR")
            {
                <a href="~/Home/">@Resource_fa_IR.App_Name</a>
            }
            else
            {
                <a href="~/Home/">@Resource.App_Name</a>
            }
      </p>
    </div>        
  </div>
</header>

Resource.Designer.cs和Resource.fa.IR.Designer.cs

public static string App_Name {
            get {
                return ResourceManager.GetString("App_Name", resourceCulture);
            }
        }

您应该在这些课程中将internal更改为public