.net - que - html textbox asp net
La diferencia entre Html.Action y Html.RenderAction (3)
De Phil Haack :
La diferencia entre los dos es que
Html.RenderAction
representará el resultado directamente en la Respuesta (que es más eficiente si la acción arroja una gran cantidad de HTML) mientras queHtml.Action
devuelve una cadena con el resultado.
He estado tratando de descubrir la diferencia entre RenderAction y Action. No sé si estoy tan preocupado por las diferencias en este momento, en cuanto a por qué no puedo hacer que RenderAction funcione. Por lo que puedo decir, estoy pasando los parámetros correctos. La sobrecarga que uso parece ser la misma para ambos:
@Html.RenderAction(Action, Controller, Route)
@Html.Action("Breadcrumb", "Navigation", new {SeoUrl = Model.CarlineBucket.SEOURLName})
@Html.RenderAction("Breadcrumb", "Navigation", new {SeoUrl = Model.CarlineBucket.SEOURLName})
Obtengo un error de compilación cuando intento usar RenderAction:
CS1502: la mejor coincidencia de método sobrecargado para ''System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)'' tiene algunos argumentos no válidos.
¿Algún consejo o sugerencia? ¿No debería molestarme con RenderAction?
El tipo de retorno de Html.RenderAction
es void
que significa que representa directamente las respuestas en Ver, donde el tipo de retorno de Html.Action es MvcHtmlString
, puede ver su vista de render en el controlador y modificarlo también utilizando el siguiente método
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
Esto devolverá la cadena Html de la Vista.
Tratar:
@{Html.RenderAction("Breadcrumb", "Navigation", new {SeoUrl = Model.CarlineBucket.SEOURLName})}
@Html.RenderAction()
genera una llamada de escritura para generar algo en la página y en su caso no lo está haciendo porque RenderAction
representa el resultado directamente en la Respuesta. si usa @{Html.RenderAction()}
debería funcionar.