سؤال

هل من الممكن منع asp.net تحكم الارتباط التشعبي من ربط أيبحيث يبدو التسمية ، في الواقع دون الحاجة إلى استبدال التحكم مع التسمية ؟ ربما باستخدام CSS أو إعداد الخاصية ؟

وأنا أعلم أن وسم على أنها تعطيل يعمل ولكن بعد ذلك يحصل على عرض مختلفة (الرمادي).

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

وأنا أعلم أن الحقيقة يجب أن يكون استبدالها مع التسمية ولكن هذا لا تبدو أنيقة مثل فقط إزالة ربط قدرة usings CSS يقول (إذا كان ذلك ممكنا).هم بالفعل عرضها في لون مختلف لذلك من الواضح أنهم للمستخدمين تعطيل.أنا فقط بحاجة إلى إيقاف تشغيل الرابط.

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

المحلول

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

$(document).ready(function() {
    $('a.NoLink').removeAttr('href')
});

كل الارتباط التشعبي الضوابط مع اسم الفئة "NoLink" سيتم تلقائيا جميع عناوين url إزالة الرابط سوف تظهر أن لا شيء أكثر من النص.

سطر واحد من مسج يمكن حل المشكلة الخاصة بك.

نصائح أخرى

أنا الغريب على ما هو عليه كنت الذي لإنجاز ذلك.لماذا استخدام الرابط ؟

هو فقط من أجل التنسيق ؟ في هذه الحالة ، استخدم فقط <span> في HTML و استخدام الأنماط لجعل شكل المباراة الروابط.

أو يمكنك استخدام الرابط ونعلق onClick-الحدث حيث كنت "return false;" والتي سوف تجعل المتصفح لا تفعل الملاحة - إذا شبيبة تمكين.

ولكن:أليس هذا رهيب مربكة للمستخدمين?لماذا خلق شيء يشبه الرابط ولكن لا شيء ؟

يمكنك تقديم مزيد من التفاصيل ؟ لدي هذا الشعور الذي تحاول حل مشكلة أكبر مما لديه طريقة حل أفضل من أن تشل الرابط :-)

ارتباط تشعبي التحكم سوف تجعل بوصفها "" "/" العلامة بغض النظر عن ما هي الإعدادات التي يمكنك القيام به.يمكنك تخصيص فئة CSS لجعل رابط تبدو طبيعية التسمية.

بدلا من ذلك يمكنك بناء التحكم المخصصة التي يرث من النظام.ويب.واجهة المستخدم.WebControls.الارتباط التشعبي, وتجاوز تجعل طريقة

protected override void Render(HtmlTextWriter writer)
        {
            if (Enabled)
                base.Render(writer);
            else
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Span);
                writer.Write(Text);
                writer.RenderEndTag(HtmlTextWriterTag.Span);
            }
        }

     }

قد تكون مبالغة بعض الشيء ، ولكنها سوف تعمل على الاحتياجات الخاصة بك.

بالإضافة إلى أنني تجد من المفيد أن يكون قاعدة asp:CustomHyperlink asp:CustomButton دروس في ملفات المشروع.يجعل من الاسهل لتحديد مخصص السلوك في جميع أنحاء المشروع.

إذا كنت تريد أن مجرد تعديل مظهر من الرابط حتى لا تبدو مثل لينك, يمكنك تعيين CSS الخاص بك "a" فئة ليست لديها تؤكد:

a: link, visited, hover, active {
    text-decoration: none;
}

على الرغم من أنني لا انصحك بما في ذلك "تحوم" هنا لأنه لن يكون هناك أي وسيلة أخرى إلى هذا الرابط.

على أي حال أنا أتفق مع @pilif هنا, هذا يبدو وكأنه الاستخدام كارثة في انتظار أن يحدث ذلك.

إذا كنت تقصد لوقف الرابط وتفعيل بالطريقة المعتادة هو على الرابط "javascript:void(0);", أي:

<a href="javascript:void(0);">فو</a>

هذا يجب أن تعمل:

onclick="return false;"  

إذا كان لا يمكنك تغيير href على "#" أيضا.مما يجعلها تبدو وكأنها بقية النص المغلق, على سبيل المثالعرض السهم بدلا من اليد:

a.dummy {  
    cursor:default;  
}  

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

إذا كنت تستخدم databind في asp.net التعامل مع ربط البيانات الحدث فقط لا تعيين NavigateUrl لو أن المستخدمين تعطيل.

هل حاولت فقط لا وضع NavigateUrl الملكية ؟ إذا كان هذا لا يقع ، قد تجعل فترة.

.الانصهار-link-wrapper { مؤشر الأحداث:لا شيء ؛ }

حل آخر هو تطبيق هذا الفصل على الارتباط التشعبي الخاص بك.

.avoid-clicks {
  pointer-events: none;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top