SORU
25 Mart 2011, Cuma


Editör/kullanarak bölümleri şablonları Görüntüle

Bir bölümünde JavaScript kodu tüm tutmak istiyorum; benim master düzeni body kapanış etiketi ve sadece en iyi bu konuda gitmek için merak sayfanın hemen önce, MVC tarzı.

Eğer JavaScript doğrudan şablon içine gömmek istiyorum daha jQuery UI DateTime Picker kullanan DisplayTemplate\DateTime.cshtml bir dosya oluşturmak için kullanılan, ama daha sonra orta sayfa hale gelecek.

Normal benim görüşlerim sadece benim master düzeni @section JavaScript { //js here } @RenderSection("JavaScript", false) kullanabilirim ama bu görüntüleme/editör şablonları - herhangi bir fikir çalışmıyor gibi görünüyor?

CEVAP
25 Mart 2011, Cuma


İki yardımcıları ile birlikte devam edebilirsin:

public static class HtmlExtensions
{
    public static MvcHtmlString Script(this HtmlHelper htmlHelper, Func<object, HelperResult> template)
    {
        htmlHelper.ViewContext.HttpContext.Items["_script_"   Guid.NewGuid()] = template;
        return MvcHtmlString.Empty;
    }

    public static IHtmlString RenderScripts(this HtmlHelper htmlHelper)
    {
        foreach (object key in htmlHelper.ViewContext.HttpContext.Items.Keys)
        {
            if (key.ToString().StartsWith("_script_"))
            {
                var template = htmlHelper.ViewContext.HttpContext.Items[key] as Func<object, HelperResult>;
                if (template != null)
                {
                    htmlHelper.ViewContext.Writer.Write(template(null));
                }
            }
        }
        return MvcHtmlString.Empty;
    }
}

ve _Layout.cshtml içinde:

<body>
...
@Html.RenderScripts()
</body>

ve bazı şablonda bir yere:

@Html.Script(
    @<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BASS212M

    BASS212M

    15 Temmuz 2009
  • DroidModderX ROOT Master

    DroidModderX

    14 ŞUBAT 2011
  • Richard Laxa

    Richard Laxa

    30 AĞUSTOS 2012