He estado tratando de averiguar la diferencia entre RenderAction y la Acción. No sé si estoy tan preocupado por las diferencias en este punto, por qué yo no puede conseguir RenderAction a trabajar. Por lo que puedo decir, estoy pasando los parámetros correctos. La sobrecarga estoy usando parece ser el mismo 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 trato y uso RenderAction:

CS1502: El mejor método sobrecargado
partido para
‘Sistema.Web.Las páginas web.WebPageExecutingBase.Escribir(El Sistema.Web.Las páginas web.HelperResult)’
tiene algunos argumentos no válidos.

Consejos o sugerencias? No debería molestarse con RenderAction?

  • Ambos de estos métodos le permiten llamar a un método de acción desde un punto de vista y salida de los resultados de la acción en su lugar dentro de la vista. La diferencia entre los dos es que el Html.RenderAction representará el resultado directamente a la Respuesta (que es más eficiente si la acción devuelve una gran cantidad de HTML), mientras que Html.Acción devuelve una cadena con el resultado.
  • posibles duplicados de la Diferencia entre Html.RenderAction y Html.La acción
InformationsquelleAutor MrGrigg | 2011-04-27

3 Comentarios

  1. 60

    Tratar:

    @{Html.RenderAction("Breadcrumb", "Navigation", new {SeoUrl = Model.CarlineBucket.SEOURLName});}

    @Html.RenderAction() genera una llamada de escritura a la salida de algo en la página y en tu caso no lo hace porque RenderAction hace que el resultado directamente en la Respuesta.

    Lugar de

    @Html.RenderAction()

    Uso

    @{Html.RenderAction();}
    • Este hecho hacer el truco. Cuando he leído que RenderAction hace que el resultado directamente en la respuesta, yo no entiendo muy bien lo que eso significa. También, se puede explicar o que me señale dónde encontrar la diferencia de @{HTML()} vs @HTML()
    • es un bloque de código, y @.. es una Expresión, una mirada a – haacked.com/archive/2011/01/06/…
    • Creo que necesita un punto y coma al final de la instrucción, justo antes del cierre }. De lo contrario, maquinilla de afeitar producirá una HttpCompileException.
    • Hay un gran video explicando Parcial vs RenderPArtial.. esto va a aclarar el {Html ;} youtube.com/watch?v=SABg7RyjX-4
    • Este truco funcionó para mí. @{ Html.RenderAction(); }
  2. 17

    De Phil Haack:

    La diferencia entre los dos es que
    Html.RenderAction , se representará la
    resultado directamente a la Respuesta (que
    es más eficiente si la acción
    devuelve una gran cantidad de HTML)
    mientras que Html.Action devuelve una cadena
    con el resultado.

  3. 5

    El tipo de retorno de Html.RenderAction es void que significa dar directamente las respuestas en la Vista donde el tipo de retorno de Html.La acción es MvcHtmlString usted puede coger su render de la vista en el controlador y modifica también mediante 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á una cadena Html de la Vista.

Dejar respuesta

Please enter your comment!
Please enter your name here