ASP.Net MVC:لذا انتظر... هل يجب تسمية معلمة المسار الافتراضية بالمعرف؟
-
05-07-2019 - |
سؤال
أي شخص لديه آخر هذه المسألة؟لا بد لي من القيام بشيء خاطئ.
لذلك أقوم بإعداد مسار لأخطاء مثل هذا:
routes.MapRoute
(
"SharedError",
"Shared/Error/{error}",
new { error = "" }
);
والدعوة مثل:
return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() }));
وعلى وحدة التحكم:
public ActionResult Error(String error)
حق بسيط؟حسنًا، عندما يتم تشغيل هذا بالفعل، يكون الخطأ خاليًا على الرغم من أن عنوان URL يبدو كما يلي:
/مشترك/خطأ/ThisIsTheError
لكن معلمة الخطأ في أسلوب الخطأ فارغة.(ونعم لقد حاولت كلمات أخرى)
الآن إذا استبدلت كل ذلك بكلمة "id" فسيعمل كل شيء.
Global.asax.cs
routes.MapRoute
(
"SharedError",
"Shared/Error/{id}",
new { id = "" }
);
إعادة توجيه:
return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() }));
وحدة التحكم المشتركة:
public ActionResult Error(String id)
هل يجب أن يكون المعرف كلمة لجميع المسارات إذا كان لديك مسار افتراضي يأخذ قيمة؟
المحلول
تحتاج دائمًا إلى تحديد وحدة التحكم ومعلمات الإجراء:
routes.MapRoute
(
"SharedError",
"Shared/Error/{error}",
new { controller = "Shared", action="Error", error = "" }
);
أعتقد أن السبب وراء نجاح استخدام المعرف بالنسبة لك هو أن المسار الافتراضي لا يزال مسجلاً، والذي يحتوي على المعرف كمعلمة وقيم افتراضية لوحدة التحكم والإجراء.
لاحظ أنه إذا كان لا يزال لديك المسار الافتراضي، فتأكد من إضافة المسار الخاص بك قبل وإلا فإنه سيطابق الآخر أولا.