有没有办法复制视图以进行本地化

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);