Htmlのヘルパーは、れるrenderPartialは、どのように動作しますか?どのように私は、部分的なビューからコンテンツにもたらすことができるヘルパーを実装することができますか?

StackOverflow https://stackoverflow.com/questions/1283079

質問

あなたがHtml.RenderPartialをされて使用する場合は、

あなたがレンダリングするビューの名前を取り、そしてそれはその場所の内容だレンダリングします。

私は似たような実装したいと思います。私はそれはいくつかの他の変数と一緒に、あなたがレンダリングするビューの名前を取り、コンテナ内のコンテンツをレンダリングしたいと思います..

public static class WindowHelper
{
    public static string Window(this HtmlHelper helper, string name, string viewName)
    {
        var sb = new StringBuilder();

        sb.Append("<div id='" + name + "_Window' class='window'>");
        //Add the contents of the partial view to the string builder.
        sb.Append("</div>");

        return sb.ToString();
    }
}

誰もこれを行う方法を知っていますか?

役に立ちましたか?

解決

れるrenderPartial拡張がResponseオブジェクトに直接レンダリングするようにプログラムされている...あなたはそれらのソースコードでこれを見ることができます:

....).Render(viewContext, this.ViewContext.HttpContext.Response.Output);

これは、あなたのアプローチを少し変更した場合、あなたはおそらくあなたが望むものを達成できることを意味します。むしろのStringBuilderにすべてを追加するよりも、あなたはこのような何かを行うことができます:

using System.Web.Mvc.Html;

public static class WindowHelper
{
    public static void Window(this HtmlHelper helper, string name, string viewName)
    {
        var response = helper.ViewContext.HttpContext.Response;
        response.Write("<div id='" + name + "_Window' class='window'>");

        //Add the contents of the partial view to the string builder.
        helper.RenderPartial(viewName);

        response.Write("</div>");
    }
}
System.Web.Mvc.Htmlを含むことは、あなたがれるrenderPartial()メソッドへのアクセスを可能にすることです。

注意

他のヒント

私たちは、あなたがHtml.Partial()を呼び出し、文字列としてビューの実際の内容を取得することができますMVC 2でこれを固定されます。

なぜViewDataをとして、またはモデルに名前を渡す、第2のビューを作成し、その内側部分を有していないなど。

のような何かます:

<div id='<%= ViewData["Name"] + "_Window"%>' class='window'>
   <% Html.RenderPartial(ViewData["Name"]); %>
</div>

役に立てば幸い、 ダン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top