ActionResultをStringにレンダリングし、ContentResultとして返します。

asp.net-mvc-3 c# html-agility-pack

質問

私は、アクション結果を文字列に変換するためにほとんど働いているコードをいくつか持っています。

メソッドEditableItemを実行すると、htmlストリームレスポンスがストリングライターに出力され、次に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");

    }

人気のある回答

なぜそれが動作していないのか分からないので、ここで使用されているメソッドに賛成してコードを破棄しました...

MVC3アクションをWCF RESTサービスメソッドの文字列にレンダリングする




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ