c# – 如何在MVC中为所有视图提供Html助手?
也许这对程序员来说是一个问题 – 我相信如果有的话,有人会建议我.
当使用MVC时,我也可以访问Html Helper变量并使用任何扩展方法,无论是.Net的还是我自己指定的. @Html.Raw("<h1>This is my HTML</h1>") 这是如何实现的?假设我想为了另一个原因添加一个单独的对象,并将其提供给我的MVC应用程序中的所有视图? 我知道我无法将其添加到控制器,因为一个视图可能被多个控制器访问. 所以我最好的猜测是需要继承IView? 编辑:抱歉 – 我没有解释自己.至少我认为…… 我希望对象可用,但也要实例化.例如,假设我有一个名为glosrob的对象,使用方法SayHello()并希望能够如此使用它: @glosrob.SayHello() 基本上我想避免必须添加代码来构建每个视图上的对象,例如避免这个 @{ var glosrob = new Glosrob(); } 解决方法
在views文件夹中,您将找到一个单独的web.config文件.在配置文件中将是所有视图派生自的类: <pages pageBaseType="System.Web.Mvc.WebViewPage"> 所以所有视图都派生自WebViewPage类,其中包含一个名为Html的属性,它暴露了HtmlHelper.
如果您希望自己的自定义属性暴露,请阅读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"> 然后你可以在你的视图中调用它: @Glosrob.SomeMethod(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |