اختلاف توجيه Asp.Net MVC في www.Mysite.com/Employee وwww.Mysite.com/Employee/ أثناء استخدام JqGrid

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

سؤال

أنا أستخدم ASP.NET MVC لأحد مشاريعي.في هذا لدي وحدة تحكم الموظف والتي يمكن استدعاؤها www.Mysite.com/Employee/ عنوان URL.

لقد استخدمت أيضًا JqGrid الذي يستخدم المتابعة لجلب البيانات

رابط:"جيتغريداتا"

أثناء اختبار نفسه وجدت ذلك

  1. إذا كتبت www.Mysite.com/Employee/ في المتصفح، فسيتم إجراء اتصال به

    www.Mysite.com/Employee/GetGridData

  2. إذا كتبت www.Mysite.com/Employee في المتصفح، فسيتم إجراء اتصال به

    www.Mysite.com/GetGridData

ملحوظة:المفقودين / في النهاية في المكالمة الثانية.

كيفية تصحيح هذا حيث من المحتمل أن يتمكن المستخدم النهائي من كتابة أي عنوان URL هذا في المتصفح.

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

المحلول

سألقي نظرة على الطريقة التي تطلب بها من JqGrid إجراء مكالمة خدمة الويب الخاصة بها - لأنها لن تعرف شيئًا عن محرك التوجيه الخاص بـ MVC افتراضيًا - وكل هذا يحدث من جانب العميل.

الخروج من MVC لمدة دقيقة، إذا كان لدي صفحة:

example.com/page1.aspx

ولديك رابط نسبي لصفحة أخرى هناك:

<a href="page2.aspx">Click here</a>

سيبحث المتصفح عن page2.aspx في نفس مستوى page1.aspx، أي.

example.com/page2.aspx

إذا قمت بنقل الصفحة 1 إلى مجلد جديد:

example.com/NewFolder/page1.aspx

سوف يطلب المتصفح

example.com/NewFolder/page2.aspx

عندما ينقر المستخدم على الرابط.

يحدث نفس الشيء لمكالمة GetGridData الخاصة بك - حيث يتم إجراؤها بواسطة متصفح الويب إلى الخادم الخاص بك بناءً على المعلومات المتوفرة لديه.

لذلك إذا استجابت صفحتك على:

example.com/Employee

ويطلب طلب نسبي إلى:

GetGridData

سيرسل المتصفح هذا الطلب إلى نفس المستوى الذي يبدو أن الموظف موجود عليه:

example.com/GetGriddata

والذي يفشل بعد ذلك لأن محرك التوجيه لا يمكنه العثور على مسار لهذا الطلب.

يجب أن تفكر في إنشاء عنوان URL لاستدعاء GetGridData ديناميكيًا من خلال نظام التوجيه، مما سيضمن أنه تم إنشاؤه على النحو التالي:

url: "/Employee/GetGridData"

التعديل النهائي للإضافة

نسيت أن أذكر أنه ربما ينبغي عليك استخدام طرق عمل UrlHelper لهذا:

url: <%=Url.Action("GetGridData")%>

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

نصائح أخرى

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