将控制器工厂添加到 ASP MVC

2024-04-30

我对工作中的一个大型项目有一个设计想法,我想我已经弄清楚了,但我真的很想得到一些关于a)总体想法和b)我提议的实现的反馈。

基本想法很简单:我想创建一个 ASP MVC 应用程序,将来可以使用其他控制器和视图进行扩展,而无需重新编译代码。这个想法是让一个 MVC 应用程序具有一组非常基本的功能,然后通过添加另一个“Application.dll”来扩展功能,其中包含特定于该应用程序的控制器、数据和业务逻辑。视图将被简单地复制安装期间与主 MVC 应用程序位于同一目录中。

问题是 MVC 在同一程序集中的类型上进行路由,因此即使我将路由定义移动到数据库,MvcHttpHandler 也无法将任何内容路由到新的 Dll,因为它不“知道”控制器类型在里面。查看 MVC 代码,我发现要加载控制器,它们只需调用 Activator.CreateInstance,它仅在当前程序集中查找。

我的解决方案很简单,但也许我遗漏了一些东西:我将通过直接替换 ControllerFactory (不知道如何执行此操作)或通过在派生类中复制该功能来重写 MvcHttpHandler。新代码将读取请求并尝试首先从当前程序集加载控制器,然后从扩展程序集加载控制器。一旦找到正确的程序集,我将使用 CreateInstance 并将该程序集传递给它以获得我想要的控制器。


结尾本文 http://weblogs.asp.net/shijuvarghese/archive/2008/10/10/asp-net-mvc-tip-dependency-injection-with-structuremap.aspx展示如何实现您自己的 ControllerFactory。基本上,您从 DefaultControllerFactory 派生,然后将其连接到 global.asax 中的 Application_Start() 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将控制器工厂添加到 ASP MVC 的相关文章

  • 如何知道 HTTP 请求标头值是否存在

    我确信这很简单 但是却让我感到厌烦 我在 Web 应用程序中使用了一个组件 它在 Web 请求期间通过添加标头 XYZComponent true 来标识自身 我遇到的问题是 如何在视图中检查此组件 以下内容不起作用 if Request
  • 可排序的 Telerik 网格 + NHibernate、IQueryable 和 ASP.NET MVC

    我正在尝试让 Telerik 网格工作 分页工作正常 我的视图代码如下所示 Html Telerik Grid Model Name Grid Columns columns gt columns Bound o gt o ItemName
  • .NET Core MVC 中的可选模型属性绑定

    我已经创建了一个AccountModel它具有以下属性 public class AccountModel Required EmailAddress public string Email get set Required StringL
  • .NET-MVC - 通过 SSL 重写 URL + 某些 URL?

    我有一个运行 IIS 6 NET MVC 和单个域名的网络服务器 该网站使用 URL 重写来生成如下 URL 域名 com controller action 我愿意强行一 1 个控制器 to use SSL 其他的应该无需 SSL 即可工
  • 为什么软件包更新后出现“找不到方法:'Void System.Web.Http.HttpResponseException..ctor”?

    我有一个 ASP NET MVC 应用程序 它在上次 NuGet 包更新后开始出现异常行为 Web应用程序使用 NET Framework 4 6 1 开发人员计算机是Windows Server 2012 R2 Essentials 我使
  • 绑定到 ViewModel 时如何更新 Model?

    我有一个 HttpPost 操作方法签名如下 HttpPost public ActionResult Edit ExistingPostViewModel model Save the edited Post 现在 在过去 当我没有使用
  • ASP.NET Core Tag Helper Checkbox 不保存未选中的值

    我正在使用标签帮助程序在 MVC 表单中添加一个复选框 div class form group div
  • Azure 云服务在应用程序池回收后停止运行

    我部署了一个 Azure 云服务 WebRole WebAPI 只有一个实例 我注意到 如果我等待一些空闲时间 没有 HTTP 请求 那么稍后服务就会死掉 并且对它的每个请求都会导致以下响应 Message An error has occ
  • MVC:如何让控制器渲染从视图启动的部分视图

    在我的 MVC5 项目中 我想在部分视图中创建一个菜单 该菜单是动态的 因为它是根据我的数据库中的内容构建的 因此 我有一个控制器负责创建菜单并将菜单模型返回到我的部分视图 public PartialViewResult GetMenu
  • 将 MVC 站点部署到 IIS 会导致找不到默认共享部分视图

    我有一个可以在本地 IIS 上完美运行的网站 我的所有页面都使用默认的共享部分视图 这称为预期 Layout cshtml 该视图放置在我的共享文件夹中 这可以在这里看到 正如我所期望的那样 这非常有效 不过 我现在发布了我的网站 然后 我
  • 如何在编辑器模板中获取序列/数组索引?

    案件 我有一个使用 X 类编辑器模板显示的 X 类项目列表 问题 如何获取编辑器模板内部正在处理的项目的索引 我一直在使用这个 HtmlExtension 它只返回迭代所需的 id 它基本上是一个正则表达式ViewData Template
  • asp.net mvc html 属性没有值

    我正在尝试根据 HTML5 规范创建一个隐藏表单 其中隐藏属性在没有值的情况下使用 现在我不知道如何将其强制到 asp net mvc 中 上面的方法不能编译 Compiler Error Message CS0103 The name h
  • 如何将 Razor 视图转换为字符串?

    我想使用我的 Razor 视图作为某种发送电子邮件的模板 所以我想将我的模板 保存 在视图中 将其作为字符串读入控制器 进行一些必要的替换 然后发送它 我有有效的解决方案 我的模板作为 HTML 页面托管在某处 但我想将其放入我的应用程序中
  • 如果 mVC 中不存在该 url,则重定向到页面未找到页面

    如果 url 不存在 我需要将用户重定向到未找到页面 如果用户复制网址并将其粘贴到浏览器上 页面将显示找不到页面的方法 在这我需要将用户重定向到页面未找到页面 看看这个 如何在 ASP NET MVC 中正确处理 404 https sta
  • 使用 Automapper 映射列表

    我有课程 public class Person Props here public class PersonViewModel Props here 然后是清单 List
  • 相对于路径匹配路由

    我想要任何以以下结尾的网址 templates filename 使用路由属性映射到特定控制器 例如 public class TemplateController Controller Route templates templateFi
  • 如何在 Html.ValidationSummary 中指定数据注释错误的顺序

    我使用以下命令在表单上显示错误 我的域对象继承自基类 我发现基类数据注释属性显示在列表底部 这违背了它们在我的表单中出现的顺序 有什么方法可以指定错误的显示顺序吗 Example public class ClassA Required p
  • 带有整数字符串的枚举

    我有一个公众号enum像这样 public enum occupancyTimeline TwelveMonths FourteenMonths SixteenMonths EighteenMonths 我将用它来DropDown菜单如下
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • asp.net mvc 文件流结果

    问题的第一部分 我在数据库中有信息 我想从数据库获取它并将其另存为 txt文件给客户端 我已经用常规的 asp net 完成了它 但在mvc中还没有 我的信息不是图像 这些关于人民的信息 我看着这个网站 http www mikesdotn

随机推荐