ASP.Net MVC:لذا انتظر... هل يجب تسمية معلمة المسار الافتراضية بالمعرف؟

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

  •  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 = "" }
);

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

لاحظ أنه إذا كان لا يزال لديك المسار الافتراضي، فتأكد من إضافة المسار الخاص بك قبل وإلا فإنه سيطابق الآخر أولا.

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