6
votes

Comment l'assistant HTML, Renderpartial, travaille-t-il? Comment puis-je implémenter une aide pouvant apporter du contenu d'une vue partielle?

Lorsque vous utilisez HTML.RenderPartial code> prend le nom de la vue que vous souhaitez rendre, et rend son contenu à cet endroit.

Je voudrais mettre en œuvre quelque chose de similaire. J'aimerais qu'il prenne le nom de la vue que vous souhaitez rendre, avec quelques autres variables, et rendre le contenu dans un conteneur. P>

Par exemple: P>

public static class WindowHelper
{
    public static string Window(this HtmlHelper helper, string name, string viewName)
    {
        var sb = new StringBuilder();

        sb.Append("<div id='" + name + "_Window' class='window'>");
        //Add the contents of the partial view to the string builder.
        sb.Append("</div>");

        return sb.ToString();
    }
}


0 commentaires

3 Réponses :


0
votes

Pourquoi ne pas créer une deuxième vue et avoir l'intérieur partiel à l'intérieur qui, passe le nom de passer comme vueData ou dans le modèle, etc.

Quelque chose comme: p>

<div id='<%= ViewData["Name"] + "_Window"%>' class='window'>
   <% Html.RenderPartial(ViewData["Name"]); %>
</div>


0 commentaires

8
votes

Les extensions Renderpartiales sont programmées directement à l'objet de réponse ... Vous pouvez le voir dans le code source pour eux:

using System.Web.Mvc.Html;

public static class WindowHelper
{
    public static void Window(this HtmlHelper helper, string name, string viewName)
    {
        var response = helper.ViewContext.HttpContext.Response;
        response.Write("<div id='" + name + "_Window' class='window'>");

        //Add the contents of the partial view to the string builder.
        helper.RenderPartial(viewName);

        response.Write("</div>");
    }
}


0 commentaires

8
votes

Nous réparons cela dans MVC 2. Vous pourrez appeler HTML.Partial () et obtenir le contenu réel de la vue comme chaîne.


0 commentaires