我有两个针对同一视图的控制器操作。也就是说,我在调用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);
}
});
答案 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>