मुझे मेनू में सक्रिय लिंक को हाइलाइट करने की आवश्यकता है। मेरा मेनू रास्ते में मास्टर पेज में है। मैं इसे लागू करने का सबसे अच्छा तरीका ढूंढ रहा हूं? कोई विचार?Asp.Net Mvc वर्तमान पृष्ठ लिंक तकनीक को हाइलाइट करते हुए?
उत्तर
इसे संभालने का सबसे अच्छा तरीका एक HTML सहायक लिखना है। वर्तमान में निष्पादित कार्रवाई प्राप्त करने और मेनू नाम की तुलना करने के लिए आप RouteData.Values["action"]
का उपयोग कर सकते हैं और यदि वे मेल खाते हैं तो एक सीएसएस क्लास लागू करें जो इसे हाइलाइट करेगा।
public static MvcHtmlString MenuItem(
this HtmlHelper htmlHelper,
string action,
string text
)
{
var menu = new TagBuilder("div");
var currentAction = (string)htmlHelper.ViewContext.RouteData.Values["action"];
if (string.Equals(
currentAction,
action,
StringComparison.CurrentCultureIgnoreCase)
)
{
menu.AddCssClass("highlight");
}
menu.SetInnerText(text);
return MvcHtmlString.Create(menu.ToString());
}
और फिर मेनू आइटम प्रस्तुत करने के लिए इस सहायक का उपयोग करें:
<%: Html.MenuItem("about", "About us") %>
<%: Html.MenuItem("contact", "Contact us") %>
...
हाय, डारिन। एचटीएमएल हेल्पर्स कहां रखता है? एक नया फ़ोल्डर और फिर इसे शामिल करने के लिए "आयात" का उपयोग करें? मैं इसका उपयोग कैसे कर सकता हूं? धन्यवाद। – user1477388
हाँ, इसे कहां रखा जाए? – 4pie0
कोई सम्मेलन और न ही विशिष्ट स्थान कस्टम HTML सहायकों डाल करने के लिए है। व्यक्तिगत रूप से मैं एक हेल्पर्स फ़ोल्डर में एक्सटेंशन विधियों को रखता हूं। –
मैं बहुत आप शुद्ध सीएसएस के साथ ऐसा कर सकते हैं यकीन है। इसमें बॉडी टैग के साथ क्लास चयनकर्ता और फफिंग शामिल है। मैं सप्ताह के हर दिन सहायक विधि के साथ जाऊंगा।
मैं इस समाधान का उपयोग करें: - आपके मेनू में विशेषता डेटा-menuPageId जोड़ने लिंक
<ul class="menu">
<li data-menuPageId="home">
@(Html.Link<HomeController>(x => x.Index(), "Home"))
</li>
<li data-menuPageId="products">
@(Html.Link<ProductsController>(x => x.Index(), "Products"))
</li>
</li>
अगला -
पहले वर्तमान पृष्ठ के लिए छिपे हुए फ़ील्ड जोड़ने ईद
<input type="hidden" id="currentPageId" value="@(ViewBag.Page ?? "home")" />
Layout.cshtml को
होम पेज या उत्पाद
जैसे पृष्ठों पर ViewBag.Page प्रारंभिक जोड़ें जोड़ेंऔर अंत में आप yor Layout.cshtml से इस javascipt संदर्भ
$(function() {
var pageIdAttr = "data-menuPageId";
var currentPage = $("#currentPageId").attr("value");
var menu = $(".menu");
$("a[" + pageIdAttr + "]").removeClass("selected");
$("a[" + pageIdAttr + "=\"" + currentPage + "\"]", menu).addClass("selected");
});
मैं हमेशा इस समाधान एचटीएमएल भाग
<ul>
@Html.ListItemAction("Home Page","Index","Home")
@Html.ListItemAction("Manage","Index","Home")
</ul>
हेल्पर भाग
public static class ActiveLinkHelper
{
public static MvcHtmlString ListItemAction(this HtmlHelper helper, string name, string actionName, string controllerName)
{
var currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
var currentActionName = (string)helper.ViewContext.RouteData.Values["action"];
var sb = new StringBuilder();
sb.AppendFormat("<li{0}", (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) &&
currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase)
? " class=\"active\">" : ">"));
var url = new UrlHelper(HttpContext.Current.Request.RequestContext);
sb.AppendFormat("<a href=\"{0}\">{1}</a>", url.Action(actionName, controllerName), name);
sb.Append("</li>");
return new MvcHtmlString(sb.ToString());
}
}
में उपयोग कर रहा हूँ चाहिए लेआउट निम्न की तरह प्रयास करें:
@{
string url = Request.RawUrl;
}
@switch (url)
{
case "/home/":
@Html.ActionLink("Home", "../home/", null, new { @style = "background:#00bff3;" })
@Html.ActionLink("Members", "../home/MembersList/")
break;
case "/home/MembersList/":
@Html.ActionLink("Home", "../home/")
@Html.ActionLink("Members", "../home/MembersList/", null, new { @style = "background:#00bff3;" })
break;
default:
@Html.ActionLink("Home", "../home/")
@Html.ActionLink("Members", "../home/MembersList/")
break;
}
आप भी संलग्न करने के लिए नियंत्रक जानकारी कृपया इस लिंक
- 1. वर्तमान उपयोगकर्ता को asp.net mvc
- 2. ASP.NET MVC 3 लैंडिंग पृष्ठ
- 3. कैसे ASP.NET MVC का उपयोग करते हुए अनुरोध डेटा
- 4. जावास्क्रिप्ट: पृष्ठ से वर्तमान माउस हाइलाइट निकालें?
- 5. Asp.Net WebForms या Asp.Net MVC
- 6. Django: क्या वर्तमान पृष्ठ लिंक
- 7. ASP.NET MVC: त्रुटि पृष्ठ में अजीब वर्ण
- 8. रेल पर रूबी नेविगेशन बार पर वर्तमान लिंक हाइलाइट करें?
- 9. कोडइग्निटर: उस पृष्ठ के लिंक को 'हाइलाइट' कैसे करें, जिस पर उपयोगकर्ता वर्तमान में चालू है?
- 10. asp.net MVC के में वर्तमान निर्देशिका जाओ
- 11. asp.net MVC के क्षेत्र डिफ़ॉल्ट पृष्ठ
- 12. ASP.NET MVC
- 13. asp.net mvc
- 14. ASP.NET-MVC
- 15. ASP.NET MVC
- 16. jQuery केवल तालिका में चयनित कॉलम को हाइलाइट करते हुए
- 17. मैं वर्तमान पृष्ठ के आधार पर एक लिंक कैसे हाइलाइट करूं?
- 18. ASP.NET MVC
- 19. ASP.NET MVC
- 20. Asp.Net Mvc
- 21. ASP.NET MVC:
- 22. ASP.NET MVC भंडार पैटर्न
- 23. ASP.NET MVC
- 24. Asp.Net MVC
- 25. Lesscss और ASP.NET MVC
- 26. ASP.NET MVC एक div JQuery
- 27. जावास्क्रिप्ट/JQuery का उपयोग करते हुए प्रासंगिक तत्व इसके नीचे गुजरता है जब नेविगेशन लिंक हाइलाइट करते हैं?
- 28. asp.net mvc: एजेक्स
- 29. ASP.NET MVC: में यह
- 30. asp.net mvc
Hw आप मेनू आइटम स्टोर करते हैं पर एक नजर है चाहते हैं, तो? आप उन्हें इन मानों पर नियंत्रक और क्रिया के साथ जोड़ सकते हैं और हाइलाइट कर सकते हैं। – LukLed
मैं उन्हें एक मास्टरपेज में स्थिर के रूप में संग्रहीत कर रहा हूं। – beratuslu
पहले से ही कवर किया गया है? देखें: http://stackoverflow.com/questions/1471362/how-to-visually-indicate-current-page-in-asp-net-mvc – thmshd