Asp.net MVC Razor将过滤器应用于响应文本

时间:2016-08-22 10:09:01

标签: c# asp.net asp.net-mvc razor

我需要对使用razor命令@打印到页面的任何文本应用简单的过滤器。
在示例中见下面的代码:

public static class MyHelper
{
    public string MyFilter(this string txt)
    {
        return txt.Replace("foo", "bar");
    }
}
此.cshtml视图文件中的

@{
    var text = "this is foo!!";
}
<div>@text</div>

我希望以某种方式打印this is bar!!而不是this is foo!!

2 个答案:

答案 0 :(得分:0)

正如@AdilMammadov所说,你可以使用HtmlHelper

使用static方法的简单C#类:

using System;
namespace MvcApplication1.MyHelpers
{
    public class MyHelpers
    {
        public static string FooReplacer(string txt)
        {
            return txt.Replace("foo", "bar");
        }
    }
}

在视图中使用帮助器:

@using MvcApplication1
...
<p>@MyHelpers.FooReplacer("foo foo")</p> <!--returns <p>bar bar</p>-->

答案 1 :(得分:0)

我相信你很亲密。唯一的问题是,您的View无法使用您的过滤器,因为您没有在视图中指定。

这应该有效:

<强>模型

public static class MyHelper
{
    public string MyFilter(this string txt)
    {
        return txt.Replace("foo", "bar");
    }
}

查看

@model AssemblyName.MyHelper

@{
    Layout = null;
    var text = Model.MyFilter("Let's go to the foo");
}
<div>@text</div>

// will display "Let's go to the bar"

我为你创建了一个dotnetfiddle,以表明这会有用。

希望这有帮助!