كيف يمكنني تغيير الطريقة التي يعرض بها MVC رابط الإجراء ديناميكيًا؟

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

سؤال

أحتاج إلى تغيير الطريقة التي يعرض بها MVC روابط الإجراءات (والنماذج وعناوين URL، وما إلى ذلك) بناءً على إعداد التكوين.أنا أكتب تطبيق فيسبوك باستخدام MS MVC وتحتاج روابط الإجراء الخاصة بي إلى عرض الرابط لذلك:

<a href="/MyFBApplication/Home/Index/">home</a>

سيؤدي النقر على الرابط أعلاه إلى التصفح إلى:
http://apps.facebook.com/MyFBApplication/Home/Index/

"MyFBApplication" هو اسم تطبيق الفيسبوك.لبناء الرابط بدأت بالاتصال

Html.ActionLink("Home", "Index", "Home")

عندما ينقر المستخدم على الرابط، سيقوم فيسبوك بتقديم طلب إلى هذا الرابط تحت الأغطية:

http://www.myapplicationserver.com/facebook/123456/Home/Index/
(123456 هو معرف العميل وهو مطلوب)

ثم تتم معالجة الاستجابة من هنا بواسطة الفيسبوك ويتم عرضها للمستخدم على النحو التالي:
http://apps.facebook.com/MyFBApplication/Home/Index/

كما ذكرنا أعلاه، يطلب فيسبوك بيانات الصفحة من وراء الكواليس.
http://www.myapplicationserver.com/facebook/123456/Home/Index/

المشكلة هي الدعوة إلى

Html.ActionLink("Home", "Index", "Home")

سوف يقدم الرابط الذي يؤدي إلى
http://apps.facebook.com/facebook/123456/Home/Index/

وأحتاجها أن تؤدي إلى:
http://apps.facebook.com/MyFBApplication/Home/Index/

لقد نجحت في العمل بشكل صحيح، وقمت بشراء مجموعة جديدة من طرق الإرشاد.

 Html.FacebookActionLink("Home", "Index", "Home")
 Html.FacebookBeginForm("Index", "Home")
 Html.Facebook(etc)

ولكن هذا له "رائحة" لذلك.أرغب في العثور على مكان يمكنني من خلاله اعتراض السباكة الخاصة بـ Html.ActionLink() أثناء العملية وتغيير الإخراج.ثم يمكنني استخدام جميع المكالمات القياسية.

شكرًا!

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

المحلول

لماذا هذا لديه "رائحة"؟قامت Microsoft ببناء أساليب ActionLink كطرق ملحقة.إذا لم تخدم هذه الأغراض أغراضك، فيمكنك كتابة أغراضك الخاصة تمامًا كما فعلت.

إذا كنت تريد حقًا، أعتقد أنه يمكنك إنشاء نسختك الخاصة من طريقة ActionLink كتحميل زائد (طالما أن توقيعات الطريقة ليست غامضة).

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

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