اختلاف توجيه Asp.Net MVC في www.Mysite.com/Employee وwww.Mysite.com/Employee/ أثناء استخدام JqGrid
-
06-07-2019 - |
سؤال
أنا أستخدم ASP.NET MVC لأحد مشاريعي.في هذا لدي وحدة تحكم الموظف والتي يمكن استدعاؤها www.Mysite.com/Employee/ عنوان URL.
لقد استخدمت أيضًا JqGrid الذي يستخدم المتابعة لجلب البيانات
رابط:"جيتغريداتا"
أثناء اختبار نفسه وجدت ذلك
إذا كتبت www.Mysite.com/Employee/ في المتصفح، فسيتم إجراء اتصال به
www.Mysite.com/Employee/GetGridData
إذا كتبت 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 على وحدة التحكم الحالية.إذا كنت بحاجة إلى الوصول إلى وحدة تحكم مختلفة، أو تمرير بعض القيم، فهناك أحمال زائدة للمساعدة.
نصائح أخرى
حاول تصحيح مسارك:فيل هاك :مصحح أخطاء التوجيه ASP.NET