微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

共享的MVC Razor在多个视图中起作用

如何解决共享的MVC Razor在多个视图中起作用

| 我的视图中有几个页面共享的功能
@functions 
{
    public HtmlString ModeImage(ModeEnum mode) 
    {
        switch(mode)
        {
            case AMode: new HtmlString(\"<img etc...\"); break;
            // more etc...
        }
    }
}
有没有一种方法可以将其保存在单独的文件中,并将其包含在每个页面上,而不必将其复制并粘贴到每个页面中。我知道我可以编写一个.cs文件并按页面对其进行访问,但是该函数确实涉及视图,因此我不希望在此函数更改时必须重新编译。     

解决方法

        这听起来像您想要博客文章ASP.NET MVC3中描述的Razor @helper方法以及Scott Guthrie在Razor中使用@helper语法。 这是概述... \“使用Razor中的@helper语法,您可以轻松创建可重用的帮助程序方法,这些方法可以将输出功能封装在视图模板中。它们可以实现更好的代码重用,还可以促进可读性更高的代码。”     ,        (以下是现有答案的详细版本。) 如果该文件夹尚不存在,请在MVC项目的根目录中创建一个名为“ 1”的文件夹。在这里,创建一个空的剃刀视图,并根据需要命名它: 根据需要向其中添加2个和/或3个方法:
@helper ShowSomething()
{
    <span>Something</span>
}

@functions
{
    public static int CalculateSomething()
    {
        return 1;
    }
}
然后,通过首先按名称访问共享视图来从视图中使用它们:
@Shared.ShowSomething()
@Shared.CalculateSomething()
    ,        您可以制作一个静态帮助器页面,然后在该页面中放置普通的
static
方法。 然后可以在任何地方写writing7ѭ来调用它,我相信您不需要重新编译该项目。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。