folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder ASP.Net Razorda Helper Kullanırken Scriptin 2 Kere İnclude Edilmesini Engellemek



ASP.Net Razorda Helper Kullanırken Scriptin 2 Kere İnclude Edilmesini Engellemek

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Başlık soruyu açıklıyor sanırım.

    Scriptlerle ilgili sorunum var. script include'a ihtiyaç duyan bir razor helperi 2 kere kullanınca gereksiz yere bir script daha ekliyor

    (Ayrıca bu scripti kontrolun üstüne eklemek zorunda kalıyorum, headera değil)

    buna bir çözüm varmı? Helperi 3 kere de kullansam 1 script eklesin


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    http://requirejs.org

    İş görür bu muhtemelen 


    Si vis pacem para bellum.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    efecan123
    efecan123's avatar
    Kayıt Tarihi: 20/Ağustos/2010
    Erkek

    bizde require js kullanıyoruz dependency injection in javascriptteki hali gibidir kendisi kullandığın her js i sayfana ekliyorsun abi o sadece bi instance ını getiriyor ayrıca cdn kullanacaksanda requirejs i öneririm.


    Benim evim valizimdir. http://efecetir.info
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Bu şekilde çözdüm beyler

    using System.Collections.Generic;
    using System.Text;
    using System.Web;
    using System.Web.WebPages.Html;
     
    
        namespace System.Web.WebPages.Html
        {
             
        public static class HtmlHelperExtensions
        {
            public static AssetsHelper Assets(this HtmlHelper htmlHelper)
            {
                return AssetsHelper.GetInstance(htmlHelper);
            }
        }
        public class AssetsHelper
        {
            public static AssetsHelper GetInstance(HtmlHelper htmlHelper)
            {
               const  string  instanceKey = "48F2764A-6898-450E-99F8-1EF0B912ED03";
                HttpContext context = HttpContext.Current;
                if (context == null) return null;
                AssetsHelper assetsHelper = (AssetsHelper)context.Items[instanceKey];
                if (assetsHelper == null)
                    context.Items.Add(instanceKey, assetsHelper = new AssetsHelper());
                return assetsHelper;
            }
            public ItemRegistrar Styles { get; private set; }
            public ItemRegistrar Scripts { get; private set; }
            public ItemRegistrar InlineScripts { get; private set; }
            public ItemRegistrar InlineStyles { get; private set; }
    
            public const string StyleFormat = "<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />";
            public const string ScriptFormat = "<script src=\"{0}\" type=\"text/javascript\"></script>";
            public const string InlineScriptsFmt = "<script type=\"text/javascript\">{0}</script>";
            public const string InlineStylesFmt = "<style type=\"text/css\">{0}</style>";
    
            public AssetsHelper()
            {
                Styles = new ItemRegistrar(StyleFormat);
                Scripts = new ItemRegistrar(ScriptFormat);
                InlineScripts = new ItemRegistrar(InlineScriptsFmt);
                InlineStyles = new ItemRegistrar(InlineStylesFmt);
            }
        }
        public class ItemRegistrar
        {
            private readonly string _format;
            private readonly IList<string> _items;
            public ItemRegistrar(string format)
            {
                _format = format;
                _items = new List<string>();
            }
            public ItemRegistrar Add(string url)
            {
                if (!_items.Contains(url))
                    _items.Add(url);
                return this;
            }
            public IHtmlString Render()
            {
                StringBuilder sb = new StringBuilder();
                foreach (string item in _items)
                {
                    string fmt = string.Format(_format, item);
                    sb.AppendLine(fmt);
                }
                return new HtmlString(sb.ToString());
            }
        }
    
    
    }

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Layouta

      @Html.Assets().Styles.Render()
      @Html.Assets().Scripts.Render()
      @Html.Assets().InlineScripts.Render()
      @Html.Assets().InlineStyles.Render()


    satırlarını yazıyorum ondan sonra  Html.Assets().Scripts.Add(...) ile ekliyorum, aynıları iki kere eklenmiyor. Frameworke dahil edilmeliydi bence


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
Toplam Hit: 554 Toplam Mesaj: 5