سؤال

أنا هناك طريقة بسيطة عند استخدام ASP.NET 4.0 التوجيه مع نماذج الويب لإنتاج طريق سيكون بمثابة نوع من البرية؟

يبدو لي أنه ضمن WebForms ، يجب عليك تحديد مسار لكل صفحة - أنا أبحث عن نوع من المسار العام الذي يمكن استخدامه حيث لا يوجد شيء محدد ، وربما رسم الخرائط مباشرة من المسار إلى المسار ...

http://somedomain.com/folder1/folder2/page من المحتمل أن يخسم إلى المجلد 1/المجلد 2/page.aspx

أي اقتراحات؟

شكرًا

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

المحلول

يمكنك مطابقة جميع الطرق المتبقية مثل هذا:

routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx");

في هذه الحالة ، نعرف جميع الطرق ، ونريد إرسال أي شيء آخر إلى صفحة "مفقودة"/404. فقط تأكد من وضع هذا على أنه الاخير الطريق ، لأنه بطاقة برية وسوف تصطاد كل شيء.

بدلاً من ذلك ، يمكنك تسجيل مسار بنفس الطريقة ، لكن داخليًا يقوم بالتعيين على صفحة ، مثل هذا:

routes.Add(new Route("{*value}", new DefaultRouteHandler()));

من شأن فئة المعالج أن تقوم بتخطيط بطاقة Wildcard الخاصة بك ، شيء من هذا القبيل:

public class DefaultRouteHandler : IRouteHandler
{
  public IHttpHandler GetHttpHandler(RequestContext requestContext)
  { 
    //Url mapping however you want here:
    var pageUrl = requestContext.RouteData.Route.Url + ".aspx";

    var page = BuildManager.CreateInstanceFromVirtualPath(pageUrl, typeof(Page)) 
               as IHttpHandler;
    if (page != null)
    {
      //Set the <form>'s postback url to the route
      var webForm = page as Page;
      if (webForm != null) 
         webForm.Load += delegate { webForm.Form.Action = 
                                    requestContext.HttpContext.Request.RawUrl; };
    }
    return page;
  }
}

تم كسر هذا قليلاً في أماكن غريبة لمنع التمرير الأفقي ، لكنك تحصل على النقطة الكلية. مرة أخرى ، تأكد من أن هذا هو الاخير الطريق ، وإلا فإنه سوف يتعامل الكل طرقك.

نصائح أخرى

بالإضافة إلى ذلك - ضع في اعتبارك أنك تحتاج إلى إضافة استثناء لملفات .AxD في ملف Global.asax إذا كانت هناك عناصر تحكم التحقق في صحة في تطبيق الويب الخاص بك:

http://basgun.wordpress.com/2010/10/25/getting-syntax-error-in-asp-net-fue-to-webresource-axd/

خلاف ذلك ، سوف تستمر في الحصول على خطأ في بناء الجملة لأن التوجيه يلتقط ملفات .AxD ولا يقوم بتحميل ملفات JavaScript المطلوبة بشكل صحيح لعناصر التحكم في التحقق من الصحة.

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