2013-05-03 88 views
1

我有兩個控制器操作,目標是相同的視圖。也就是說,我在從控制器操作的視圖調用中指定了一個視圖名稱。第二個動作在ViewBag中放入一個html字符串。我只是想在視圖中顯示這個html字符串。我曾嘗試呈現一個html字符串來查看

@ViewBag.HtmlDoc 

@Html.Raw(ViewBag.HtmlDoc) 

,但沒有被渲染。

任何幫助,將不勝感激。提前致謝。

--controller代碼---

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"); 

     } 

我調試的ViewBag.Table的查看,可以看到HTML字符串。但視圖永遠不會被更新/呈現。我用一個簡單的文字像測試:

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

它進入代碼,所以我知道ViewBag.Table不爲空,但該字符串沒有得到呈現,無論是。

是否需要刷新_layout.cshtml中的RenderBody()?或者有什麼影響?

- 阿賈克斯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

您絕對必須包含代碼示例。不容易包含足夠的代碼,並且不會讓它壓倒性的,否則你的場景是不可追蹤的 – 2013-05-03 02:53:12

+0

謝謝,由於它太羅嗦,我縮短了我的解釋。 – alpha 2013-05-03 03:18:44

+0

這很奇怪。你不需要Html.Raw。你的第一次嘗試應該每次都做。添加控制器代碼,在其中填充ViewBag變量。我不能想到任何其他問題,而不是無法填充。 – 2013-05-03 03:23:28

回答

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> 
+0

就是這樣!非常感謝!!桌子現在正在渲染! – alpha 2013-05-03 05:30:56

+0

很高興提供幫助。將來,考慮使用子操作方法和jquery'.load'方法的部分視圖。這是一個有點學習,但是一個更好的方式來實現你想要的,並會給你更多的靈活性。 – 2013-05-03 05:37:21

相關問題