0

別のコントローラーアクションを動的に呼び出して文字列としてレンダリングするコードを MVC コントローラーに記述しようとしています。基本的に、かみそりビューで利用できる @Html.Action() ヘルパー メソッドを使用しようとしています。

ただし、コントローラーの HtmlHelper は、コントローラーのアクションを呼び出して文字列を出力するための Action メソッドにアクセスできないようです。

部分ビューを文字列に動的にレンダリングし、その文字列をコンテンツの結果に追加する方法を知っている人はいますか?

このロジックは完全に動的であり、ユーザーがデータベースに設定した構成に応じて HTML を完全に変更できるため、かみそりビューでこのロジックを実行したくありません。これは、多くの異なるコントローラー アクションを呼び出して、文字列を取得し、Content の結果に追加したい場合があることを意味します。

人々が与えることができるどんな助けも大歓迎です。

4

1 に答える 1

0

次の方法を使用できます(ここから取得):

protected string RenderPartialViewToString(string viewName, object model)
{
    if (string.IsNullOrEmpty(viewName))
        viewName = ControllerContext.RouteData.GetRequiredString("action");

    ViewData.Model = model;

    using (StringWriter sw = new StringWriter()) {
        ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);

        return sw.GetStringBuilder().ToString();
    }
}

別の可能性は、使用できるカスタム Html ヘルパー拡張メソッドを呼び出すことができるビューをレンダリングすることですHtml.Action

public static IHtmlString MyMethod(this HtmlHelper html)
{
    // you could use html.Action("someAction", "someController") here
    ...
}
于 2012-06-16T21:03:57.970 に答える