渲染ActionResult为字符串,返回为ContentResult

本文关键字:返回 ContentResult 字符串 ActionResult 渲染 | 更新日期: 2023-09-27 18:04:21

我有一些代码几乎可以将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");
    }

渲染ActionResult为字符串,返回为ContentResult

我不知道为什么它不起作用,所以我取消了代码,转而使用这里使用的方法…

从WCF REST服务方法向字符串呈现MVC3动作