我需要对使用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!!
答案 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,以表明这会有用。
希望这有帮助!