تحديد اسم العرض الحالي ضمن عرض جزئي في ASP.NET MVC
-
16-09-2019 - |
سؤال
لدي وجهة نظر جزئية في تطبيق Test ASP.NET MVC. هذه الرأي مسؤولة عن عرض أزرار قائمة التطبيقات.
أريد تغيير لون الزر الموجود حاليا صفحة نشطة. حاليا لقد كتبت شيئا مثل:
<ul id="menu">
<% var activeClass = (string)(ViewData["currentPage"]) == "Home" ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>
<% activeClass = (string)(ViewData["currentPage"]) == "About" ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>
وقم بتعيين بيانات العرض في إجراءات تحكم:
//in home action
ViewData["currentPage"] = "Home";
//in About action
ViewData["currentPage"] = "About";
هذا يعمل ولكن علي تعديل كل إجراء تحكم. هل هناك أي طريقة أفضل للكشف تلقائيا عن طريقة العرض وتغيير بطريقة أو بأخرى رمز العرض الجزئي لتغيير اللون وفقا لذلك.
المحلول
أعتقد أنك لا تحتاج إلى viewdata ["currentpagepage"]. يستخدم ViewContext.RouteData.Values
في حين أن:
جرب هذا:
<ul id="menu">
<% var activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
&& ViewContext.RouteData.Values["Action"] == "Home") ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>
<% activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
&& ViewContext.RouteData.Values["Action"] == "About") ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>
لا تنتمي إلى StackOverflow