لا أعرف الصفحة الرئيسية الصفحة التي يتم عرضها؟

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

سؤال

عند أتنقل على موقع على شبكة الانترنت باستخدام MasterPages، هل تعرف التطبيق ما الصفحة أنا على؟ إذا كان الأمر كذلك، فهل تخزينه في كائن أستطيع الوصول؟

والسبب أطلبه هو حتى أتمكن من استبدال هذا:

//masterpage 
<div id="nav_main">
   <ul><asp:ContentPlaceHolder ID="navigation" runat="server">                    
   </asp:ContentPlaceHolder></ul>
</div>

//content page(s)
<asp:Content ContentPlaceHolderID="navigation" ID="theNav" runat="server">
   <li><a href="default.aspx">Home</a></li>
   <li id="current"><a href="faq.aspx">FAQ</a></li>
   <li><a href="videos.aspx">Videos</a></li>
   <li><a href="#">Button 4</a></li>
   <li><a href="#">Button 5</a></li>
</asp:Content>

ومع حل أكثر أناقة للملاحة، والذي يسلط الضوء على رابط إلى صفحة من خلال وجود مجموعة ID عنصر القائمة إلى "الحالي". حاليا كل صفحة بإعادة الملاحة مع مجموعة ID ارتباط كل منها لها على التيار.

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

المحلول

وكنت أتفق مع كريس: استخدام عنصر تحكم للتعامل مع عرض هذه القائمة وجعلها على علم بما رابط يجب تسليط الضوء عليها. وإليك طريقة يمكنني استخدام بانتظام. قد تصبح أكثر تعقيدا إذا كنت قد حصلت على عدة صفحات التي تحتاج نفس الارتباط على غرار مختلف، ولكن تحصل على هذه الفكرة.

Dim thisURL As String = Request.Url.Segments(Request.Url.Segments.Count - 1)
Select Cast thisUrl
   Case "MenuItem1.aspx"
       lnkMenu1.CssClass = "Current"
   Case "MenuItem2.aspx"
       lnkMenu2.CssClass = "Current"
End Select

نصائح أخرى

لتحصل على URL الطلب الحالي من داخل صفحة رئيسية كنت ستفعل:

string s = this.Page.Request.FilePath; // "/Default.aspx"

وأوصي أيضا تتحرك الملاحة الخاص بك في الصفحة الرئيسية بدلا من محتوى الصفحة. وهذا سيجعل من الاسهل للحفاظ على / وصول.

نعم، استخدام التعليمات البرمجية أدناه في الملف الرئيسي الخاص بك. وسوف اعطيكم اسم الصفحة المحتوى.

Page.ToString().Replace("ASP.","").Replace("_",".")

ويجب أن تكون قادرة على الحصول على الصفحة عن طريق الوصول إلى الخاصية الصفحة. IE:

string type = this.Page.GetType().Name.ToString();

وربما كنت مجرد استخدام واحدة من طلب مسار من داخل صفحة رئيسية لضبط الحالي. ربما كنت أيضا خاصية على الصفحة الرئيسية لتجاوز ذلك، حتى أن صفحات هذا الموقع بدون روابط أو شيء يمكن تعيينها إلى شيء معقول.

وعملت بالنسبة لي بهذه الطريقة - شكرا جاريد

وهذا هو ما فعلته للحصول على القائمة الملاحة جهدنا لتسليط الضوء على عنصر القائمة الحالية للصفحة التي ننظر إليها الآن. هو رمز في الصفحة الرئيسية. كنت في الأساس الحصول على أسم دليل (طريقة جاريد) نحن نستخدم "~" في صلاتنا لذلك اضطررت لتجريد أنه من أصل. تكرار جمع menuItems من السيطرة القائمة. مقارنة الخاصية navigateUrl.

و(لست أفضل المبرمج وأسوأ من ذلك في شرح - لكنه يعمل وكنت تشوفيد جدا معها)

protected void HighlightSelectedMenuItem()
    {
        string s = this.Page.Request.FilePath; // "/Default.aspx"
        string nav;
        if (s.Contains("~"))
        {
            s = s.Remove(s.IndexOf("~"), 1);
        }

        foreach (MenuItem item in navMenu.Items)
        {
            if (item.NavigateUrl.Contains("~"))
            {
                nav = item.NavigateUrl.Remove(item.NavigateUrl.IndexOf("~"), 1);
                if (s == nav)
                {
                    item.Selected = true;
                }
            }

        }
    }
string s = this.Page.GetType().FullName;
string[] array = s.Split('_');
int count = array.Count<String>();
string currentPage = array[count - 2];

وبدلا من ذلك يمكنك البحث عن عنوان الصفحة إذا كنت قد وضعت عنوان معين إلى صفحة فرعية بدلا من محاولة masterpage:

this.Page.Title

ونأمل أن يساعد.

وهذا هو في C #

string thisURL = Request.Url.Segments[Request.Url.Segments.Length - 1];
        if (thisURL.ToLower()== "default.aspx") li1.Attributes.Add("class","yekan active");
        if (thisURL.ToLower() == "experts.aspx") li2.Attributes.Add("class", "yekan active");

والتحكم والملاحة، وليس الصفحة الرئيسية، يجب أن يكون مسؤولا عن الصفحة التي أبرزت حاليا.

وإما أن الصفحة التي يتم تحميلها يجب إخطار عناصر الاستكشاف الذي هو عليه، أو تحكم الملاحة في حد ذاته يجب أن تتبع ذلك.

ويفترض النقطة التي الصفحات الرئيسية لتكون مجرد حامل أن يتم عرض المحتوى. ليس من المفترض أن السيطرة على أي شيء.

والمحاولة

this.Page.Master

ووسوف تحصل على صفحة رئيسية من الصفحة الحالية.

وهناك أيضا Request.RawURL

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