2016-08-22 30 views
0

razorコマンド@を使用してページに印刷するテキストに簡単なフィルタを適用する必要があります。例の
コード以下を参照してください。@AdilMammadovはあなたが使用することができます言ったように私は何とかthis is foo!!Asp.net MVC Razorレスポンステキストにフィルタを適用

+1

この目的のために 'HtmlHelper'を作成することができます。 –

+1

コントローラではなく、ビューでそれを行うのはなぜですか(どこで行うべきですか)。 –

+0

@StephenMueckeなぜなら、印刷されるテキストはデータセットや変数などに存在する可能性があるからです。データセットの各行フィールドで関数を実行するよりも、かみそりレスポンスにフィルタを適用する方が簡単だと思います。 – mhesabi

答えて

0

の代わりにthis is bar!!を印刷することを期待し、この.cshtmlビューファイル内

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

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

それのためにHtmlHelperstatic方法で

シンプルな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>--> 
+0

ビューモデルを指定する必要があります。なぜ、ビューで 'using'ステートメントを使用していますか? '@model MvcApplication1.MyHelpers'に変更する必要があります。' FooReplacer'メソッドを呼び出すと、 'Model.FooReplacer(" foo foo ")' –

+0

@BviLLe_Kidを実行するだけです。 @model MvcApplication1.MyHelpers'しかし、私は私のアプローチがうまく動作していることを知っているのでhttp://stackoverflow.com/a/3244924/1821692 – feeeper

0

私はあなたが接近していると信じています。唯一の問題は、ビュー内でそのフィルタを指定していないため、ビューがフィルタの使用を知らないことです。

これは動作するはずです:

モデル

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

私はこれが動作することを示すために、あなたのためのdotnetfiddleを作成したビュー

@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" 

希望すると便利です。

+0

この質問に回答としてマークすることができますので、 ! –

関連する問題