• illustrator Curse
  • 7Learn Android Course
  • 7Learn SEO Course
  • 7Learn WP Theme Course

    حرفه ای ترین دوره آموزش طراحی قالب وردپرس



  آیا می دانید دوره های آموزشی سون لرن از جامع ترین و کاربردی ترین آموزش های موجود در سطح وب فارسی است!

بازنویسی آدرس ها در ASP.NET Web Forms

6476 ۲۷ آبان ۹۲

در ASP.NET MVC به طور پیش فرض و توکار آدرس هایی که تولید میشه هم کاربر پسند و هم از نظر سئو دارای مزیت های زیادی هست اما در ASP.NET Web Forms این امکان به صورت پیش فرض وجود نداره و نیاز به کمی کد نویسی داره،در این مطلب ما با کمی دستکاری در فایل global.asax پروژه  این امکان رو برای وب سایت ASP.NET خودمون ایجاد میکنیم.

در ابتدای کار فایل Global.asax رو باز میکنیم و این تابع رو به انتهای فایل اضافه میکنیم،دقیقا بعد از متد Session_End اضافه اش میکنیم.

خوب حتما سوال پیش میاد چرا این تابع هیچ خروجی نداره و اون پارامتر ورودی هم چیه؟ تابع رو به صورت void تعریف می کنیم چون قرار نیست خروجی داشته باشه بلکه کد های داخل تابع کار اصلی رو انجام میدن؛اون پارامتر ورودی هم مسیر های درخواستی به اپلیکشن رو در اختیار ما قرار میده (پروسه هدایت درخواست های HTTP از سمت کلاینت به سمت اپلیکشن و در نهایت تابع مورد نظر برای اجرای درخواست رو بهش میگن مسیریابی یا Routing).

خوب حالا ما این تابع رو باید در متد اجرای اپلیکیشن صدا بزنیم.در همین فایل global.asax متدی با نام Application_Start وجود داره که این متد هنگامی فراخوانی میشه که اپلیکیشن ما شروع به کار میکنه و اولین درخواست براش ارسال میشه.

خوب ما در این تابع جدول مسیر های اپلیکیشن رو برای تابع خودمون به عنوان پارامتر ارسال کردیم تا بتونیم داخل تابع خودمون اونارو به مسیر صحیح هدایت کنیم.

در این مرحله ما کد های لازم رو به تابع خودمون اضافه میکنیم،فرض کنید صفحه ای با نام Products.aspx دارید که محصولات سایت رو نشون میده و برای نمایش دسته ای از محصولات شما به طور معمول از این کد استفاده می کنید.

و حالا میخوایم با استفاده از این کد به این شکل تغییرش بدیم.

برای این کار ما کد زیر رو به تابعی که ساختیم اضافه میکنیم.

در این کد گفتیم که اگه درخواستی به شکل Products/cat/id برای ما ارسال شد شما این درخواست رو به صفحه Products.aspx منتقل کن،در قسمت کد id رو داخل براکت قرار دادیم و این یعنی این مقدار متغییر هستش و میتونه هر مقداری باشه که در صفحه مورد نظر قابل دریافته.پارامتر اول متد MapPageRoute هم رو خالی قرار دادیم ولی توضیحش اینه که در اونجا باید نامی برای این route خودمون انتخاب کنیم تا در قسمت های دیگه ازش استفاده کنیم.

حالا برای تست صفحه Products.aspx رو باز میکنیم و در داخل متد page_load کد زیر رو می نویسیم.

اینجا از مقادیری که با درخواست ارسال شده چک میکنیم ببینیم مقدار id ست شده که اگه ست شده باشه اونو دریافت و چاپش کردیم(عنوان id دقیقا همونی هست که درتابع اصلی ثبتش کردیم،حال شما می تونید از دیتابیس اطلاعات لازم رو دریافت کنید و نشون بدید )

اگه مراحل کار رو به دزستی انجام داده باشید می تونید از آدرس Products/cat/115 به جای Products.aspx?cat_id=115 استفاده کنید.

شما به هر تعداد که خواستین میتونید برای صفحات مختلف Routing تعریف کنید و ازشون به خوبی استفاده کنید.

امیدورام مفید بوده باشه.موفق باشید

منبع:MSDN

:: مطالب جدید سون لرن را از طریق ایمیل دریافت کنید :

دیدگاه ها 16 دیدگاه برای این مطلب ارسال شده است. نظردهی برای این مطلب بسته شده است .

  • ‏‏

    سلام؛
    ممنون آقاکیوان عزیز؛
    آقا کیوان لود سایت کند شده مشکلی پیش اومده؟

    • ‏‏
      کیوان علی محمدی(۲۸ آبان ۱۳۹۲)

      سلام میثم خان،نه داداش مشکلی نیست؛یعنی ما که چیزی ندیدیم،میشه بگی کجا همچین مشکلی وجود داره و چقدر تاخیر داره؟

  • ‏‏

    سلام کیوان جان؛
    همین تو لود اولیه سایت در صفحه اول؛ البته الان خداروشکر اوکی شد!

  • ‏‏
    بهنام رسولی(۲۸ اردیبهشت ۱۳۹۳)

    سلام ، عالی بود. 😀

  • ‏‏
    اکبر قره باغی(۱۰ تیر ۱۳۹۳)

    اقا کیوان مطلبتون واقعا خوب و کار آمد بود!
    ممنون

  • ‏‏
    اکبر قره باغی(۱۰ تیر ۱۳۹۳)

    خب اقا کیوان من url رو که اینجوری کنم پس چجوری باید با queryString مقدار id مطالب رو بگیرم؟!!

    • ‏‏
      کیوان علی محمدی(۱۱ تیر ۱۳۹۳)

      در این جا لازم نیست دیگه شما از کوئری استرینگ استفاده کنی بلکه از route به ترتیب میتونی پارامترهایی که در تایع registerroute تعریف کردی رو بخونی،مثلا اینجا شده id حالا میتونی یه پارامتر دیگه تعریف کنی به نام cat و در صفحه مربوطه مقدار cat رو مثل آیدی بخونی.

  • ‏‏
    اکبر قره باغی(۱۱ تیر ۱۳۹۳)

    خب اقا کیوان یه سوال دیگه!
    من چطور میتونم ادرس url رو خودم تعیین کنم؟
    مثلا عنوان مطالب بره و در url بشینه!

    مثل این: website.com/the-first-post

  • ‏‏
    اکبر قره باغی(۱۴ تیر ۱۳۹۳)

    اقا کیوان خب من اگه بخوام ادرس های مطالبم اینطوری بشه باید چکار کنم؟
    مثلا: WebSite.com/the-first-post

    ممنون

    • ‏‏
      کیوان علی محمدی(۱۴ تیر ۱۳۹۳)

      به جدول مطالب یه فیلد با عنوان slug اضافه میکنن و اون مقدار دلخواه رو براش قرار میدن (موقع ثبت مطلب جدید) حالا بر اساس اون مقدار مطلب رو لود میکنن و به کاربر نشون میدن.دقیقا با استفاده از همین روش بازنویسی آدرس ها میشه ازش استفاده کرد.MVC هم که ذاتا اینطوریه آدرس هاش.

      • ‏‏
        اکبر قره باغی(۱۵ تیر ۱۳۹۳)

        خب آقا کیوان تو بازنویسی آدرس ها(در روشی که شما گفتین) بالاخره باید تو یجایی id مطلب رو بدیم دیگه!!!!!

        ولی خب من میخوام که اصلا id مطلب رو در url ندم!

        • ‏‏
          سجاد دریس(۱۵ تیر ۱۳۹۳)

          خب بالاخره باید query بر اساس یه فیلدی به دیتابیس ارسال بشه، استفاده از غیر از id هم کمی غیر منطقیه، چونکه اولا باید کاملا دقیق باشه مقدار، و درضمن بیشتر از یک نتیجه رو برای نمایش مطلب بر نگردونه، میتونید از اسم مطلب هم استفاده کنید، البته اگه عنوان مطالبتون مشابه نباشه

        • ‏‏
          کیوان علی محمدی(۱۶ تیر ۱۳۹۳)

          همون طور که سجاد گفتن لازمه یه فیلد در آدرس موجود باشه که ما گفتیم slug یا همون نام پست باشه به همون شکلی که شما گفتین دیگه لازم نیست id هم باشه،البته اگه آیدی هم باشه مشکلی برای سئو پیش نمیاد.

      • ‏‏
        اکبر قره باغی(۱۵ تیر ۱۳۹۳)

        ببخشید من اینقدر سوال میپرسما 😀

  • ورود/عضویت سریع با اکانت فیسبوک/جیمیل شما

    :: شما می توانید با استفاده از اکانت یاهو یا جیمیل خود به صورت کاملا امن، سریع و بدون نیاز به ورود اطلاعات عضو و وارد سایت شوید. در این صورت هیچ نیازی به ورود نام کاربری و رمز عبور خود نخواهید داشت و هویت شما از طریق ایمیلتان مورد تائید قرار می گیرد .
    برای استفاده از این روش باید در اکانت گوگل(جیمیل) و یا یاهوی خود لاگین باشید .
    عضویت/ ورود سریع با :
    در حال اتصال ...

    ورود به سایت

    ورود سریع با :
    در حال اتصال ...

    جستجو در سون لرن

    عبارت :
    7LearnTelegram