【问题标题】:ASP.NET MVC - ASPX with non-default constructorASP.NET MVC - 具有非默认构造函数的 ASPX
【发布时间】:2009-07-30 10:16:07
【问题描述】:

ASPX 视图(在 ASP.NET MVC 中)是否可以具有非默认构造函数并在创建此视图时使用此构造函数?

示例 - 页面将从此类继承:

public class ViewPageWithHelper<TModel> : System.Web.Mvc.ViewPage<TModel> where TModel : class
    {
        public ViewPageWithHelper(Helpers helpers)
        {
            Helpers = helpers;
        }

        protected Helpers Helpers { get; private set; }
    }

ASPX 视图:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="MyInjectedViewPage<MyModel>" %>

<% Helpers.XXXX %>

现在,我想以某种方式将 Helpers 注入到视图中 - 自动。想法?

【问题讨论】:

    标签: .net asp.net-mvc dependency-injection


    【解决方案1】:

    我认为你应该尝试创建自己的 IViewEngine,它会使用默认的 webform 视图引擎创建视图,然后使用属性注入来注入依赖项。

    【讨论】:

      【解决方案2】:

      为什么需要注入助手?

      当我过去需要帮助器时,我要么为 HtmlHelper 编写了一些扩展方法,要么只是创建了一个静态帮助器类并直接在视图中使用它。

      【讨论】:

      • 因为助手使用了一些注入的对象,例如会话对象、服务、存储库等。我不想让视图知道的东西......否则,静态扩展方法就足够了。但我希望助手可以进行单元测试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 2018-10-28
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多