有没有办法复制视图以进行本地化
Is there a way to duplicate views for localization
由于我的网站内容很多,有没有办法为每种语言复制视图?
例如,我会有一些观点,例如 About_en.cshtml、About_fr.cshtml、About_es.cshtml
然后使用过滤器根据所选语言调用正确的视图。真的不知道如何实现它,但这是一个想法:
var v = ViewEngines.Engines.FindView(
filterContext.Controller.ControllerContext,
viewResult.ViewName + "_" + defaultLang, null
);
if (v.View != null)
viewResult.ViewName += "_" + defaultLang;
或者对于内容多的网站,除了资源文件,你还有别的想法吗?
谢谢。
您可以轻松地在函数内使其成为条件。您所要做的就是在从函数返回时简单地提及该视图的名称:
[HttpGet]
public ActionResult Foo(string lang)
{
string ViewName = "";
if (lang == "French")
{
ViewName = "About_fr";
}
else if (lang == "English")
{
ViewName = "About_en";
}
else
{
ViewName = "About_es";
}
return View(ViewName);
}
以上内容可以解决问题。此外,如果你有一个绑定到视图的模型,你可以简单地将模型作为第二个参数传递:
return View(ViewName, model);
由于我的网站内容很多,有没有办法为每种语言复制视图? 例如,我会有一些观点,例如 About_en.cshtml、About_fr.cshtml、About_es.cshtml
然后使用过滤器根据所选语言调用正确的视图。真的不知道如何实现它,但这是一个想法:
var v = ViewEngines.Engines.FindView(
filterContext.Controller.ControllerContext,
viewResult.ViewName + "_" + defaultLang, null
);
if (v.View != null)
viewResult.ViewName += "_" + defaultLang;
或者对于内容多的网站,除了资源文件,你还有别的想法吗? 谢谢。
您可以轻松地在函数内使其成为条件。您所要做的就是在从函数返回时简单地提及该视图的名称:
[HttpGet]
public ActionResult Foo(string lang)
{
string ViewName = "";
if (lang == "French")
{
ViewName = "About_fr";
}
else if (lang == "English")
{
ViewName = "About_en";
}
else
{
ViewName = "About_es";
}
return View(ViewName);
}
以上内容可以解决问题。此外,如果你有一个绑定到视图的模型,你可以简单地将模型作为第二个参数传递:
return View(ViewName, model);