كيفية إضافة سمة الوسائط إلى علامة HTML Link Link لـ ASP.NET Webresource.AXD HTTP Handler
-
02-10-2019 - |
سؤال
يتم استخدام معالج 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
ينسب.