1

我有两个针对同一视图的控制器操作。也就是说,我在从控制器操作调用 View 时指定了一个视图名称。第二个动作将一个 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 不为空,但字符串也不会被渲染。

我需要刷新_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);

并将 div 添加到要呈现 html 的视图中

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