اضافة Meta Tags و Title الى ASP.NET core في Controller
تطوير الويب Backend - ASP.NET Core
السؤال : كيف يمكن اضافة Meta Tags و Title الى ASP.NET core في Controller بحيث تكون متغيره حسب محتوى الصفحه. يعني ما نثبتها في View
الفكره هون : هو تغيير عنوان الصفحه Title بشكل برمجي بحيث يتغير حسب محتوى الصفحه.
تمام.
حتى نعمل التغيير بنحتاج الى اضافة النص المطلوب عرضه في Meta Tags و Title داخل action في Controller وبعدها بنخزن هذه القيم في ViewBag.
وبعد هيك بنعرض ViewBag في View.
نطبق مثال حتى نفهم الموضوع:
لنفرض انو عندنا action داخل Controller باسم Index
الكود:
public class DetailsController : Controller { public IActionResult Index() { return View(); } }
لتشغيل هذا action اكيد لازم يكون عندنا View بنفس الاسم :
الكود:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
</body>
</html>
لاستدعاء هذا View بكون الرابط:
https://localhost:44382/details
لو حاولنا نشوف شو هي Meta tags و Title بالصفحه بعد التشغيل بتكون :
(حتى تشوف التفاصيل انقر يمين فوق الصفحه وبعدها اختر View Page Source
النتيجة:
meta tag و title الظاهرين في الشاشة هم القيم الافتراضية.
ممكن نغير هاذه القيم مباشرة من View وبتكون ثابته على طول.
حتى نغير هذه القيم برمجيا نغير الكود في action الى
public class DetailsController : Controller
{
public IActionResult Index()
{
var strMetaTag = new StringBuilder();
strMetaTag.AppendFormat(@"<meta content='{0}' name='Keywords'/>", "Keyword1, Keyword2, Keyword3 ");
strMetaTag.AppendFormat(@"<meta content='{0}' name='Descption'/>", "Description Keyword");
ViewBag.MetaTag = strMetaTag.ToString();
ViewBag.Title = "Page Title Here";
return View();
}
}
ونغير في الكود في View الى :
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Html.Raw(ViewBag.MetaTag);
</head>
<body>
</body>
</html>
تمام شوف النتيجة انو تم عرض القيم التالية ( الي تخزنت في Controller)
عرض العنوان من القيمة المخزنه في ViewBag.Title باستخدام الكود :
<title>@ViewBag.Title</title>
وتساوي
Page Title Here
عرض قيم meta من القيمة المخزنة في ViewBag.MetaTag باستخدام الكود
@Html.Raw(ViewBag.MetaTag);
بهدف تحويلها الى نص HTML
والنتيجة تساوي
<meta content='Keyword1, Keyword2, Keyword3 ' name='Keywords'/><meta content='Description Keyword' name='Descption'/>;
وايضا في action داخل controller حولنا القيم في المتغير strMetaTag الى string
الكود:
var strMetaTag = new StringBuilder();
strMetaTag.AppendFormat(@"<meta content='{0}' name='Keywords'/>", "Keyword1, Keyword2, Keyword3 ");
strMetaTag.AppendFormat(@"<meta content='{0}' name='Descption'/>", "Description Keyword");
ViewBag.MetaTag = strMetaTag.ToString();
ViewBag.Title = "Page Title Here";
return View();
اترك تعليقك