2016-04-27 7 views
1

は、私はカミソリファイルにそれを呼び出す場合、それは細かいレンダリングRazorヘルパー内でヘルパーを適切にレンダリングするにはどうすればよいですか?

@helper TabTest() 
{ 
    using (Html.BeginPortlet()) 
    { 
     <strong>hello</strong> 
    } 
} 

...このシナリオを想像してみてください。

@TabTest() 

出力:<div class="portlet"><strong>hello</strong></div>

私は別のヘルパーを使用してそれを呼び出す場合...例えば:@Html.RenderBootstrapTabContent(TabTest())はその後、レンダリングは同じではありません。

出力:

<div class="portlet"></div> 
<strong>hello</strong> 

これはただの粗例であり、私は単純にする冗長なコードを削除しました。私はそれがパイプラインが書かれている方法と関係があると思いますが、それを修正する方法はありません。

私はviewcontextsとtextwritersに関することを読んだことがありますが、ここでどのように適用されるか分かりません。

ヘルパー:

public static MvcHtmlString RenderBootstrapTabContent(this HtmlHelper helper, HelperResult content) 
{ 
    return content.ToHtmlString(); 
} 

BeginPortlet方法は、カスタムおよびBeginFormに非常に類似しており、IDisposableインターフェースを使用しています。

この奇妙なエラーを修正するにはどうすればよいですか?

答えて

0

私の質問があなたに合いませんでしたが、同じように呼び出さずに説明しようとしたことを他の誰かが見つけました。 http://jordanwallwork.co.uk/2012/07/nested-htmlhelpers-with-razor-and-using/

私がオンラインでできるすべてを読んだ後、私はまだ答えが見つかりませんでした。おそらく誰もこれを試したことがない(またはそうしないと知っていた)人はいないようです。

最後に、ヘルパーとIDisposableを使用してBeginPortletと同じ方法でRenderBootstrapTabContentメソッドを書き換えることで問題を解決しました。だから今の代わりに書いて...

@Html.RenderBootstrapTabContent(TabTest()) 

私は今

using (Html.BeginBootstrapTabContent()) { @TabTest() } 

を使用する私は、私は、これはあなたを助けるかもしれない助けこれに最後の数日間で多くの時間を無駄にしました。

あなたが良いアイデアをお持ちでしたらお知らせください。

関連する問題