2013-03-15 123 views
0

我有一些代碼幾乎可以將actionresult轉換爲字符串。將ActionResult呈現爲字符串,將其作爲ContentResult返回

執行方法EditableItem後,它將html流響應輸出到一個stringwriter,然後我得到html並對其進行修改,然後在字符串中使用html(帶有轉義字符串)。

我的問題是,在代碼的結尾,我不能返回一個內容結果。我認爲這是因爲我搞亂了ControllerContext。我完全相信如果這是問題,但是這段代碼爲我返回一個空白的html頁面。但最後,readonlyHtmlString字符串充滿了很棒的html代碼。而渲染常規的ContentResult也不起作用。我該如何補救?

感謝

public ActionResult Readonly(long Id = 0, long id2 = 0) 
    { 

     var localWriter = new StringWriter(); 
     var response = ControllerContext.RequestContext.HttpContext.Response; 
     response.Output = localWriter; 
     this.EditableItem(Id, id2).ExecuteResult(ControllerContext); 
     localWriter.Flush(); 
     var htmlStringWithEscapes = localWriter.ToString(); 

     var htmlDoc = new HtmlDocument(); 
     htmlDoc.LoadHtml(htmlStringWithEscapes); 

     foreach (HtmlNode inputNode in htmlDoc.DocumentNode.SelectNodes("//input")) 
     { 
      //var disabledNode = inputNode.Clone(); 
      inputNode.Attributes.Add("disabled", "disabled"); 
      //inputNode.ParentNode.ReplaceChild(inputNode, disabledNode); 
     } 

     var readonlyHtmlString = htmlDoc.DocumentNode.OuterHtml; 

     //should return a readonly view at this point!! 
     //return Content(readonlyHtmlString, "text"); 

     //this code doesn't work anymore either 
     return Content(String.Format("This is the Material Item Controller > Readonly and Id is {0} and id2 is {1}",Id, id2),"text"); 

    } 
+0

我需要看到EditableItem操作 – 2013-03-15 17:33:50

回答

相關問題