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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP MVC Razor视图扩展方法,如何创建“全局”视图方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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">
原文链接:https://www.f2er.com/aspnet/252815.html

猜你在找的asp.Net相关文章