كيفية إضافة سمة الوسائط إلى علامة HTML Link Link لـ ASP.NET Webresource.AXD HTTP Handler

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

سؤال

يتم استخدام معالج ASP.NET Webresource.AXD HTTP لخدمة الموارد المضمنة في DLL's.

يتم إنشاء علامة HTML Link تلقائيًا بواسطة ASP.NET.

أرغب في اعتراض توليد علامة HTML Link لمجموعة معينة من CSS المدمجة من DLL من طرف ثالث وإضافة سمة الوسائط.

في تلخيص:

أرغب في إضافة سمة الوسائط إلى علامة HTML Link لـ ASP.NET Webresource.AXD HTTP Handler.

إذا هذا:

<link type="text/css" rel="stylesheet" href="/WebResource.axd?d=XXXXX" />

يبدو هكذا:

<link media="screen and (min-device-width: 481px)" type="text/css" rel="stylesheet"
 href="/WebResource.axd?d=XXXXX" />

هتافات

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

المحلول

هناك حل بديل. أولاً ، تتم إضافة روابط مثل هذه إلى Pageرأس. يجب أن يكون صفحتك runat=”server” في ال <head> علامة على ورقة النمط التلقائي. الصفحات التي أنشأتها IDE لديها هذا الإعداد تلقائيًا. لذلك ، الروابط التي تتم إضافتها هي HtmlLink نوع التحكم. الفكرة هي التكرار من خلال الضوابط في Pageرأس ، تجد HtmlLink الضوابط وضبط السمة اللازمة (أو حتى السمات). أدرج هذا في Page_Load حدث:

Page.Header.Controls
    .OfType<HtmlLink>()
    .ToList()
    .ForEach(link =>
    {
        link.Attributes["media"] = "screen and (min-device-width: 481px)";
    });

قبل ذلك كان لدي:

<head id="Header">
    <title></title>
    <link href="App_Themes/MyTheme/main.css" 
          type="text/css" 
          rel="stylesheet" />
</head>

وبعد النتيجة هي:

وأنا أعلم ، هذا يستخدم Themes بدلا من WebResource.axd ولكن بالنسبة للآخر ، ستكون النتيجة هي نفسها.

أحدث شيء: قد يكون هناك روابط أخرى في الصفحة. لذلك سيكون من الجيد الاعتراف ملكنا الروابط (يجب تعديل الروابط). لذلك إذا لم يكن هناك id السمة التي يمكنك التعرف عليها href ينسب.

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