1

同じビューを対象とする 2 つのコントローラー アクションがあります。つまり、View from controller アクションの呼び出しでビュー名を指定しました。2 番目のアクションは、HTML 文字列を ViewBag に入れます。この html 文字列をビューに表示したいだけです。私が試してみました

@ViewBag.HtmlDoc

@Html.Raw(ViewBag.HtmlDoc)

しかし、何もレンダリングされません。

どんな助けでも大歓迎です。前もって感謝します。

--コントローラーコード---

public ActionResult ShowReport(string URL)
        {
            string tableString = ""; 

            [Code to Create table called ReportTable and add rows etc]

            tableString = RenderControlToString(ReportTable );

            ViewBag.Table= tableString; 

            return View("ShowReport");

        }

View で ViewBag.Table をデバッグしたところ、html 文字列が表示されました。しかし、ビューが更新/レンダリングされることはありません。次のような単純なテキストでテストしました。

@if (ViewBag.Table != null)
{
        //@ViewBag.Table;       
        @:The day is: @DateTime.Now.DayOfWeek.
}

コードに入るので、ViewBag.Table が null ではないことがわかりますが、文字列もレンダリングされません。

_layout.cshtml で RenderBody() を更新する必要がありますか? またはその趣旨の何か?

-- ajax 呼び出し --

ボタンの onclick イベントは、次の ajax メソッドを呼び出します。

$.ajax({

            url: "/Home/ShowReport",
            data:  { URL: urlString} ,
            type: 'POST',
            success: function(data) {
               alert(data);
            },
            error: function (e, textStatus, jqXHR) {
                alert(e.statusText);

            }

        });
4

1 に答える 1

1

アクション メソッドを変更して JSON コンテンツを返す

public ActionResult ShowReport(string URL)
    {
        string tableString = ""; 

        [Code to Create table called ReportTable and add rows etc]

        tableString = RenderControlToString(ReportTable );

        //ViewBag.Table= tableString; 

        return this.Content(tableString, "application/json");

    }

JQuery を変更して戻り値を再利用する

        success: function(data) {
           $('#divTable').innerHTML(data);

htmlをレンダリングするビューにdivを追加します

<div id='divTable'></div>
于 2013-05-03T05:01:51.490 に答える