也许这是程序员的问题 - 如果是这样,我相信有人会建议我。
使用 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/