我使用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>
答案 0 :(得分:0)
您可以直接使用resx
而不是viewbag
,如下所示:
<强>解决方案强>
布局和两个resx。
<强> _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
。