Hacer un ActionResult a una cadena, devolverlo como ContentResult

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

Pregunta

Tengo un código que casi funciona para convertir un resultado de acción en una cadena.

Después de ejecutar el método EditableItem, genera la respuesta del flujo html a un escritor de cuerdas, luego obtengo el html y lo modifico, y luego tengo el html en una cadena (con caracteres de escape).

Mi problema es que al final del código, no puedo devolver un resultado de contenido. Supongo que esto es porque estoy jugando con el ControllerContext. Estoy completamente seguro de que este es el problema, pero este código devuelve una página html en blanco para mí. Pero al final, la cadena readonlyHtmlString está llena de excelente código html. Y renderizar un ContentResult regular tampoco funciona. ¿Cómo puedo remediar esto?

Gracias

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

    }

Respuesta popular

No estoy seguro de por qué no funcionó, así que deseché el código a favor de los métodos utilizados aquí ...

Renderice una acción MVC3 a una cadena desde un método de servicio REST de WCF



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow