كيف هو مساعد HTML، Renderpartial، العمل؟ كيف يمكنني تطبيق مساعد يمكنه إحضار المحتوى من عرض جزئي؟

StackOverflow https://stackoverflow.com/questions/1283079

سؤال

عند استخدام HTML.RenderPartial يستغرق اسم الرأي الذي تريد تقديمه، والعرقن هو المحتوى في هذا المكان.

أود تنفيذ شيء مماثل. أود أن أسم اسم الرأي الذي تريد تقديمه، إلى جانب بعض المتغيرات الأخرى، وتقديم المحتوى داخل حاوية ..

علي سبيل المثال:

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();
    }
}

أي شخص يعرف كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

يتم برمجة ملحقات RenderPartial لتقديمها مباشرة إلى كائن الاستجابة ... يمكنك رؤية هذا في التعليمات البرمجية المصدر لهم:

....).Render(viewContext, this.ViewContext.HttpContext.Response.Output);

هذا يعني أنه إذا قمت بتغيير نهجك قليلا، فمن المحتمل أن تحقق ما تريد. بدلا من إلحاق كل شيء إلى Stringbuilder، يمكنك القيام بشيء مثل هذا:

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

لاحظ أنه يتيح لك System.web.mvc.html الوصول إلى أساليب Renderpartial ().

نصائح أخرى

نحن نبض هذا في MVC 2. ستتمكن من الاتصال ب HTML.Partial () والحصول على المحتويات الفعلية للعرض كسلسلة.

لماذا لا تنشئ عرضا ثانيا ولديه جزئيا داخل ذلك، قم بمرور اسم ViewData أو في النموذج وما إلى ذلك ..

شيء مثل:

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

نأمل أن يساعد، دان

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top