0

actionresult を文字列に変換するためにほとんど機能しているコードがいくつかあります。

メソッド 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");

    }
4

1 に答える 1