ASP.NETMVC-从外部DLL动态加载视图
创始人
2024-09-19 02:01:13
0次

ASP.NET MVC 中,视图是放置在 Web 应用程序的目录结构中的。然而,有时候需要从外部 DLL 加载视图。下面提供一种实现方法:

  1. 创建一个类库项目来保存视图。在该项目中创建一些视图,文件夹路径与 Web 应用程序中视图的路径相同。

  2. 在该类库项目中添加一个非托管资源文件(.resx),并将资源设置为“嵌入型”:

  3. 创建一个扩展方法,该方法可以在运行时加载视图:

public static MvcHtmlString LoadExternalView(this HtmlHelper htmlHelper, string viewName, string assemblyName)
{
    string typeName = $"{assemblyName}.Views.{viewName}"; 
    Assembly assembly = Assembly.Load(assemblyName); 

    Type type = assembly.GetType(typeName);
    if (type != null)
    {
        object instance = Activator.CreateInstance(type);

        var razorViewEngine = new RazorViewEngine();
        var fakeControllerContext = new ControllerContext();
        fakeControllerContext.HttpContext = new HttpContextWrapper(HttpContext.Current);
        fakeControllerContext.RouteData = new RouteData();
        var result = razorViewEngine.FindView(fakeControllerContext, viewName, "", false);
        var view = result.View;

        var viewContext = new ViewContext(fakeControllerContext, view, result.ViewData, result.TempData, 
                              new StringWriter());
        viewContext.ViewBag.Title = viewName;

        var executedView = ((IView)instance);
        executedView.Render(viewContext, viewContext.Writer);
        return MvcHtmlString.Create(viewContext.Writer.ToString());
    }
    return null;
}
  1. 在 Web 应用程序的视图中使用该扩展方法:
@Html.LoadExternalView("ExternalView.cshtml", "MyExternalLibrary")

注意

相关内容

热门资讯

揭秘一下!桂林字牌透视功能神器... 揭秘一下!桂林字牌透视功能神器,桂林字牌一直真的是有透视神器1、许多玩家不知道桂林字牌辅助怎么退出观...
我来分享!非常麻将透视功能插件... 我来分享!非常麻将透视功能插件,非常麻将总是是有透视插件1、全新机制【非常麻将ai辅助工具激活码】2...
盘点几款!捕鱼大作战开挂功能插... 盘点几款!捕鱼大作战开挂功能插件,捕鱼大作战果然是真的有开挂插件1、在捕鱼大作战插件功能辅助器技巧中...
教程攻略!女神之光开挂功能攻略... 教程攻略!女神之光开挂功能攻略,女神之光一贯是有开挂攻略1、下载好女神之光正确养号方法之后点击打开,...
重大通报!萤火互动辅助功能技巧... 重大通报!萤火互动辅助功能技巧,萤火互动都是存在有辅助技巧1、点击下载安装,萤火互动脚本分类一目了然...
总算了解!新奇玩乐透视挂功能神... 总算了解!新奇玩乐透视挂功能神器,新奇玩乐真是是真的有透视挂神器新奇玩乐能透视中分为三种模型:新奇玩...
揭秘一下!中至九江透视功能软件... 揭秘一下!中至九江透视功能软件,中至九江都是是真的有透视软件该软件可以轻松地帮助玩家将中至九江外卦神...
每日必看推荐!盛世棋牌透视功能... 每日必看推荐!盛世棋牌透视功能教程,盛世棋牌竟然真的是有透视教程1、玩家可以在盛世棋牌线上大神俱乐部...
玩家必看教程!新067互娱透视... 玩家必看教程!新067互娱透视功能攻略,新067互娱真是是真的有透视攻略1、用户打开应用后不用登录就...
热点推荐!滴滴开挂功能脚本,滴... 热点推荐!滴滴开挂功能脚本,滴滴原来是有开挂脚本1、首先打开滴滴辅助器下载最新版本,在滴滴辅助首页我...