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

  • Boiler Room

    Boiler Room

    10 Mayıs 2012
  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012