加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP MVC Razor视图扩展方法,如何创建“全局”视

发布时间:2020-12-16 00:38:43 所属栏目:asp.Net 来源:网络整理
导读:我正在使用Razor视图与asp mvc预览3 我正在尝试创建一些我想直接在视图中可用的方法。这些不是真正的Html帮助方法,所以我不认为扩展HtmlHelper是有道理的吗? 我的目标是能够在视图中调用方法,即 @HelloWorld(); vs @Html.HelloWorld() 我可以通过在HtmlHe
我正在使用Razor视图与asp mvc预览3

我正在尝试创建一些我想直接在视图中可用的方法。这些不是真正的Html帮助方法,所以我不认为扩展HtmlHelper是有道理的吗?

我的目标是能够在视图中调用方法,即

@HelloWorld(); vs @Html.HelloWorld()

我可以通过在HtmlHelper上创建一个扩展方法来让Html.HelloWorld工作

public static class HtmlExtensions
{
    public static string HelloWorld(this HtmlHelper helper)
    {
        return "Hello";
    }
}

我想做同样的事情,但是为了这个观点;我的问题 – 视图是什么类型的对象?

注意:我可以通过在.cshtml页面中定义方法来使其工作

@functions 
{
    public string HelloWorld()
    {
        return "Hello";
    }
}

@HelloWorld() @* now this works *@

然后我试图把这个代码我的_viewstart.cshtml文件认为它可以在所有的视图,但它不是

如果我知道哪种类型的视图是我认为可以轻松扩展,任何帮助赞赏

解决方法

事实证明,asp运行时将在运行时定义Execute方法,因此自定义视图基类也必须是抽象的
using System;
using System.Web.Mvc;

namespace MyMvcWebApp.Extensions
{
    public abstract class ViewBase<TModel>
        : System.Web.Mvc.WebViewPage<TModel> where TModel : class
    {
        // now this will be available in any view @HelloWorld()
        public string HelloWorld()
        {
            return "Hello from the ViewBase class";
        }
    }
}

这应该使用强类型的视图,它看起来像剃刀所有的视图是强类型的,当你没有定义类型’动态’被使用,这是强类型

同样,当ClickTricity声明你然后更新web.config(在视图目录下的一个)

<pages pageBaseType="MyMvcWebApp.Extensions.ViewBase">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读