سؤال

أنا أعتقد - مجمع URL للتعامل مع ASP MVC 1.0:كل أفعالي في معظم وحدات تحكم تتطلب معلمتين في كل وقت:حساب المشروع.هذا هو على رأس كل عمل متطلبات.وهذا يعني نموذجية رابط مثل هذا:

http://abcd.com/myaccount/projects/project_id/sites/edit/12

في هذا المثال:حسابي هو اسم الحساب. المشاريع يمكن أن يكون وحدة تحكم خيارات أخرى مثل مواقع, الموظفين. project_id هو معرف من المشروع خلال حسابي, مواقع يمكن أن يكون وحدة تحكم خيارات أخرى مثل الموظفين أو المدفوعات. تحرير هو العمل ، 12 هو معرف الموقع تحريرها.(نأمل أن يكون هذا واضح بما فيه الكفاية)

الآن خيار واحد هو أن إنشاء الطريق وتمرير project_id و الحساب في جميع الإجراءات من وحدات التحكم عن طريق إضافة اثنين من معلمات إضافية إلى جميع الإجراءات.هذا ليس حقا المطلوب و أيضا أنا لست متأكد من اثنين من وحدات تحكم (المشاريع و المواقع) هي الذهاب إلى العمل هنا.

بلدي الوضع المثالي هو استخدام نوع من السياق أن يسافر مع الدعوة إلى وحدة تحكم عمل متجر project_id و حسابي في هناك.بقية المعلمات ثم يمكن التعامل معها بطريقة طبيعية مثل:

// sitescontroller
public ActionResult Edit(string id)
{
string account = somecontext["account"];
string project_id = somecontext["project"];
// do stuff
}

أي أفكار كيف/أين هذا يمكن أن يحدث ؟ أيضا كيف يتم هذا الانتقال للعمل مع ActionLink (أيتوليد الصحيح الروابط على أساس هذا السياق)?

وذلك بفضل!

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

المحلول

تحتاج أولا إلى إضافة الرموز إلى طرق مثل {company}/projects/{project}{controller}/{action}/{id}.ثم إذا كتبت الخاصة بك IControllerFactory ثم أنه سيكون من السهل جدا لدفع القيم من RouteData في وحدة تحكم عن طريق منشئ أو ومع ذلك أردت أن تفعل ذلك.ربما أسهل طريقة للبدء سيكون فرعية DefaultControllerFactory و تجاوز CreateController الأسلوب.

نصائح أخرى

هذا لا معنى له بالنسبة لي.لماذا يكون الطريق الذي هو أقرب إلى ما يلي:

{controller}/{id}/{controller}/{id}

?

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