HTML.ActionLink مشاكل
-
20-08-2019 - |
سؤال
أحاول تقديم رابط لنتائج بحث المرشح.
<%= Html.ActionLink("Filter Results", "Index", new { page = Model.RestaurantList.PageIndex(), searchText = Model.SearchText, useFilter = true, filterOption = Model.FilterOption, filterText = Model.FilterText }, null)%>
تعريف وحدة التحكم على هذا النحو
public ActionResult Index(int? page, string searchText, bool useFilter, string filterText, string filterOption)
ومع ذلك ، عندما أقوم بتصحيح هذا ، لا يتم ضبط القيم بشكل صحيح ، حتى متغير USEFILTER.
يتم تقديم الرابط الخاص بي LocalHost/Home/Index/True؟ الصفحة = 0
أي أفكار كيفية إصلاح هذا؟
المحلول
شريحة الكود تبدو جيدة. أعتقد أن هناك أخطاء محتملة:
- معلومات المسار الخاطئة: تحقق من ROUTES.MAPROUTE (...) المكالمات في ملف global.ascx.cs/vb للتأكد
- وحدة تحكم خاطئة: حاول استخدام الحمل الزائد لـ ActionLink الذي يحدد وحدة تحكم صراحة
إذا كنت لا تزال غير قادر على العمل ، فقد ترغب في نشر مزيد من المعلومات (مثل رمز رسم الخرائط ، اسم العرض/وحدة التحكم)
نصائح أخرى
يبدو أنه يجب أن يعمل.
هل قمت بالتحقق من أن حقول النموذج التي تنتقل إليها إلى ActionLink تحتوي بالفعل على بيانات؟
ومع ذلك ، عندما أقوم بتصحيح هذا ، لا يتم ضبط القيم بشكل صحيح ، حتى متغير USEFILTER. يتم تقديم الرابط الخاص بي LocalHost/Home/Index/True؟ الصفحة = 0
أعتقد أن معلمة useFilter الخاصة بك يتم تقديمها بالفعل. تم تعيينه على الطريق على ما أعتقد.
حاول تعيين قيمة متشددين لـ SearchText
إذا ظهر ، فلن تقوم بتعيين النموذج الخاص بك في وحدة التحكم.
كان لي موقف مشابه.
شيء من هذا القبيل:
Html.ActionLink("Click me", "Index", "Student",
{ ID = theclass.StudentID }, null)
تقدم دائما
localhost/myapp/Student/Index/1234
بينما كنت أجرب ، لاحظت ذلك Index
اختفى جزء من عنوان URL إذا قمت بتغيير اسم المعلمة من ID
لشيء مثل IDX
localhost/myapp/Student/?IDX=1234
اتضح أن اسم المعلمة ID
هو خاص بسبب إدخال المسار الافتراضي في global.asax.cs (الذي يضع نمط الوصول إلى كائن الأعمال المريح)
للعمل حول هذا ، توقفت ببساطة عن استخدام Index
لاتخاذ معرّف وبدلاً من ذلك حدد طريقة أخرى مثل هذا:
public ActionResult Detail(int ID)
بعد كل شيء ، حسب مبدأ التصميم Restfull ، Index
يهدف إلى إظهار "قائمة كائنات الأعمال" أو نوع من مجموعة من كائنات العمل ، وليس كائن عمل واحد. لذا تمرير معرف كائن العمل إلى Index
هو نوع من انتهاك النمط.
بدلاً من تحريف الذراع وأجبرت تصميمي المحرج ، تغيرت إلى الطريق الطبيعي.
أعتقد أن أفضل ممارسة للتصميم Index
نقطة الدخول هي الاحتفاظ به بدون المعلمة ، أو تمرير معلمات الترشيح/الفرز فقط.