渲染html字符串以查看

时间:2013-05-03 02:46:37

标签: c# jquery asp.net-mvc json asp.net-mvc-4

我有两个针对同一视图的控制器操作。也就是说,我在调用View from controller action时指定了一个视图名称。第二个操作将一个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字符串。但View永远不会得到更新/渲染。我测试了一个简单的文字,如:

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

它进入代码,所以我知道ViewBag.Table不为null,但字符串也不会被渲染。

我是否需要在_layout.cshtml中刷新RenderBody()?或者那种效果?

- ajax call -

按钮onclick事件调用此ajax方法:

$.ajax({

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

            }

        });

1 个答案:

答案 0 :(得分: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>