Net platformasi bilan tanishish clr, cts va cls


Download 428.24 Kb.
bet16/18
Sana07.05.2023
Hajmi428.24 Kb.
#1437478
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
C# методичка

Yo`naltirish
Oldingi boblarda biz qandaydir tarzda marshrutga duch keldik. Masalan, tekshirgichning ba'zi harakatlariga kirishda biz brauzerning manzil satriga yozdik http://localhost:3456/Home/Index, bu erda Home-Controller prefiksisiz kontroller nomi va Index - bu kontrollerning ishlash usuli nomi. Agar Index usuli int: public ActionResult Index(int Id) kabi ba'zi parametrlarni qabul qilsa, biz ushbu usulga murojaat qlishimiz va qiymatni quyidagi satr yordamida uning parametriga o'tkazishimiz mumkin: http://localhost:3456/Home/Index/5. Bu borada hamma narsa juda oddiy. Ammo biz nima uchun marshrutni aniq belgilashimiz kerakligi va marshrutlarni qanday boshqarishimiz mumkinligi haqida hali gaplashmadik.

Marshrutlarni aniqlash mexanizmini ko'rib chiqing. Ichida ASP.NET MVC 5 barcha marshrut ta'riflari RouteConfig faylida joylashgan.loyihada App_Start papkasida joylashgan cs. Agar biz unga qarasak, standart marshrut sozlamalarini ko'rib chiqamiz:


using System;


using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace Mvc5RoutesApp
{public class RouteConfig

{
public static void RegisterRoutes(RouteCollection routes)


{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);}}}

Marshrutlarni o'rnatish RegisterRoutes statik usuli bilan amalga oshiriladi. Biroq, marshrutlarni aniqlash shu bilan tugamaydi, chunki biz ushbu usulni ishga tushirishda dasturda chaqirishimiz kerak. Bu Global faylida ishlab chiqariladi.asax Application_Start usulida:


protected void Application_Start()


{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);}

Usulni chaqirish RouteConfig.RegisterRoutes(RouteTable.Routes); faqat dasturda marshrutlarni ro'yxatdan o'tkazadi.


Endi fayldagi standart marshrut ta'rifini tahlil qilaylik RouteConfig.cs. Birinchi qator routes.IgnoreRoute("{resource}.axd/{*pathInfo} "); ba'zi fayllar uchun so'rovlarni qayta ishlashni o'chiradi, masalan, * kengaytmasi bilan.axd (WebResource.axd).
Keyingi-standart marshrutning haqiqiy ta'rifi. Routes usuli.MapRoute talab bo'yicha marshrutni xaritalashni amalga oshiradi. Ushbu usulning haddan tashqari Yuklangan versiyalarida biz qo'shimcha xaritalash parametrlarini o'rnatishimiz mumkin.
Usul parametrlarini tahlil qilaylik. Birinchidan, name xususiyatidan foydalanib, marshrut nomi o'rnatiladi-standart. Ikkinchi parametr - url so'rov satrining shablonini yoki ushbu yo'nalish taqqoslanadigan Url shablonini o'rnatadi.
URL shablonida jingalak qavslar bilan o'ralgan bir nechta segmentlar mavjud. Bunday holda, segment so'rovning chiziqlar orasidagi qismini ifodalaydi. Shablonning har bir bunday segmentida parametr mavjud. Ushbu parametrlar URL parametrlari deb nomlanadi. Bunday holda, bu controller, action va id parametrlari. Ammo umuman olganda, parametrlar har qanday alfasayısal belgilarni o'z ichiga olgan turli xil nomlarga ega bo'lishi mumkin.
So'rovni olgandan so'ng, marshrutlash mexanizmi URL satrini tahlil qiladi va marshrut qiymatlarini lug'atga - RequestContext ilovasi konteksti orqali kirish mumkin bo'lgan RouteValueDictionary ob'ektiga joylashtiradi. Unda URL parametrlarining nomlari kalit sifatida ishlatiladi va tegishli URL segmentlari qiymat sifatida ishlaydi.
Uchinchi usul parametri routes.MapRoute - defaults marshrut uchun standart qiymatlarni belgilaydi. Masalan, agar to'satdan so'rov satrida barcha parametrlar ko'rsatilmagan bo'lsa va so'rovning o'zi, masalan, manzilga ketsa http://localhost/ , keyin marshrutlash tizimi usulni chaqiradi Index nazoratchi Home parametrda ko'rsatilganidek defaults. Bundan tashqari, agar biz tekshirgich usulini ko'rsatmasak, masalan, http://localhost/Home/ , usul ham chaqiriladi Index nazoratchi Home.
Shuning uchun, agar xohlasak, masalan, bizning mijozimiz sukut bo'yicha usulga murojaat qilmaydi Index nazoratchi HomeController va, masalan, usulga Show nazoratchi BookController, keyin biz ushbu parametrning qiymatlarini mos ravishda o'zgartirishimiz mumkin:
defaults: new { controller = "Book", action = "Show", id = UrlParameter.Optional }
Oxirgi parametr ixtiyoriy deb e'lon qilindi id = UrlParameter.Optional. shuning uchun, agar u so'rovlar qatorida ko'rsatilmagan bo'lsa, u hisobga olinmaydi va parametrlar lug'atiga o'tkaziladi RouteValueDictionary. Masalan, so'rov http://localhost/Home/Create/ 3 usulni chaqiradi Create nazoratchi HomeController, ushbu usulga parametr sifatida 3 raqamini o'tkazish. Shu bilan birga, so'rov http://localhost/Home/Create/ shuningdek, usulni chaqiradi Create nazoratchi HomeController, garchi unda oxirgi parametr ko'rsatilmagan.

Download 428.24 Kb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   18




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling