加载在 ViewBag 中设置视图名称的部分视图

本文关键字:视图 加载 ViewBag 设置 | 更新日期: 2023-09-27 18:31:47

我从我的控制器发送本地化的视图名称,例如

string currentCulture = Thread.CurrentThread.CurrentCulture.ToString();
string viewName = string.Empty;
switch (currentCulture)
{
     case "en-US":
       viewName = "en-US.cshtml";
       break;
     case "de-DE":
       viewName = "de-DE.cshtml";
       break;
     case "fr-FR":
       viewName = "fr-FR.cshtml";
       break;
       default:        
 }
ViewBag.LocView = "~/Views/Home/"+viewName;

和内部视图,我想使用部分喜欢显示

@Html.Partial(@ViewBag.LocView);

但这显然是不行的,因为我得到了

"System.Web.Mvc.HtmlHelper"没有适用的名为 "部分",但似乎具有该名称的扩展方法。 无法动态调度扩展方法。考虑选角 动态参数或调用扩展方法而不调用 扩展方法语法。

加载在 ViewBag 中设置视图名称的部分视图

ViewBag 不是强类型,@Html.Partial需要一个字符串,所以你应该能够:

@Html.Partial((string)@ViewBag.LocView);

调用 ViewBag 时需要将其转换为字符串数据类型

@Html.Partial((string)@ViewBag.LocView)