c# - Html helper 'available' 如何用于 MVC 中的所有 View ?

标签 c# .net asp.net-mvc

也许这是程序员的问题 - 如果是这样,我相信有人会建议我。

使用 MVC 时,我还可以访问 Html Helper 变量并使用定义的任何扩展方法,无论是 .Net 方法还是我自己指定的方法。

@Html.Raw("<h1>This is my HTML</h1>")

这是如何实现的?假设我出于其他原因想要添加一个单独的对象,并使其可用于我的 MVC 应用程序中的所有 View ?

我知道我不能将它添加到 Controller ,因为一个 View 可能会被多个 Controller 访问。

所以我最好的猜测是需要子类化 IView?

编辑:抱歉 - 我没有解释自己。至少我认为...

我希望对象可用,但也实例化。例如,假设我有一个名为 glosrob 的对象,它有一个方法 SayHello() 并且希望能够这样使用它:

@glosrob.SayHello()

本质上,我想避免在每个 View 上添加代码来构造对象,例如避免这种情况

@{
    var glosrob = new Glosrob();
}

最佳答案

How is Html helper 'available' to all views in MVC?

在您的 View 文件夹中,您会找到一个单独的 web.config 文件。在配置文件中将是所有 View 派生自的类:

<pages pageBaseType="System.Web.Mvc.WebViewPage">

因此所有 View 都来自 WebViewPage包含一个名为 Html 的属性的类,该属性公开了 HtmlHelper。

Say I wanted to add a separate object for another reason and have it available to all views in my MVC app?

如果您想公开自己的自定义属性,您应该阅读 Changing Base Type Of A Razor View .

首先,您使用自己的属性创建自己的类:

public abstract class CustomWebViewPage : WebViewPage {
  public Glosrob Glosrob { get; set; }

  public override void InitHelpers() {
    base.InitHelpers();
    Glosrob = new Glosrob ();
  }
}

并更新您的配置:

<pages pageBaseType="MyProject.Web.CustomWebViewPage">

然后你就可以在你的 View 中调用它了:

 @Glosrob.SomeMethod();

关于c# - Html helper 'available' 如何用于 MVC 中的所有 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044937/

相关文章:

c# - VB/C#.net 动态添加带有Background Worker的控件项

c# - 将 List<int> 添加到 mysql 参数

javascript - 无法将数组从 jQuery 发送到 MVC 4 Controller

c# - 从 Controller 传递时数据不显示

asp.net-mvc - asp.net mvc 3 可变长度可编辑列表

c# - 如何使文本/标签平滑?

c# - 为 JSON 构造 C# 对象

c# - WPF 数据网格行数据绑定(bind)?

c# - FluentAssertions 检查对象字段是否不相等?

c# - 定时信号量