Как определить стандартный маршрут приложения, созданного по технологии ASP.NET MVC?



Маршруттарды құру үшін MapRoute әдіснамасынқолданамыз. Мысалы:

public class RouteConfig

{ public static void RegisterRoutes(RouteCollection routes)

{ routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(

name: "newRoute",

url: "{controller}/{action}" );

      }

}

Немесе Route обьектісін құрып одан кейін оны RouteCollection маршруттар жиынтығына қосамыз. Екі маршрутты анықтаймыз:

public class RouteConfig

{ public static void RegisterRoutes(RouteCollection routes)

{ routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(

name: "Default",

url: "{controller}/{action}/{id}" );

Route newRoute = new Route("{controller}/{action}", new MvcRouteHandler());

routes.Add(newRoute);

}

}

Сонымен бұл жерде екі маршрут анықталған. Бірінші маршрут үш сегментті бар сұраныстарды қанағаттандырады. Екіншісі newRoute тек қана екі сегменті бар сұраныстармен қанағаттандырылады.

 

 

Как определить и использовать статический сегмент маршрута в приложении, созданного по технологии ASP.NET MVC?

ASP.NET MVC технологиясында маршруттың статикалық сегменті URL шаблондарымен тікелей байлнысты болып табылады.

URL шаблонындағы барлық сегменттер айнымалы бола бермейді. Сонымен қатар, статикалық сегменттерді қосатын шаблондар да құрылады. Төмендегі URL-ге сәйкестікті тексерейік.

http://mysite.com/Public/Home/Index

 

Оны төмендегі шаблон арқылы тексерейік:

using System.Web.Mvc;

using System.Web.Routing;

 

Namespace UrlsAndRoutes

{

Public class RouteConfig

{

   public static void RegisterRoutes(RouteCollection routes)

   {

       routes.MapRoute(null, "Public/{controller}/{action}",

           defaults: new { action = "Index", controller = "Home" });

 

       routes.MapRoute("MyRoute", "{controller}/{action}",

           defaults: new { action = "Index", controller = "Home" });

   }

}

}

Бұл шаблон біріншісі – Public болатын үш сегментке ие, URL-ге сәйкес болып табылады. Ал қалғаг екі сегменттер кез келген мәнге те бола алады және controller мен action айнымалылары үшін қолданылады. Егер соңғы екі сегмент сәйкес келмесе стандартты мәндер қолданылады.

Сонымен қатар, URL-дің басқа да шаблондарын құруға болады, олар статикалық сегменттерге ие болып табылады. Мысалы:

using System.Web.Mvc;

using System.Web.Routing;

 

Namespace UrlsAndRoutes

{

Public class RouteConfig

{

   public static void RegisterRoutes(RouteCollection routes)

   {

       routes.MapRoute(null, "X{controller}/{action}");

 

       // ...

   }

}

}

Көрсетілген маршруттағы шаблон бірінші сегменті Х әрпінен басталатын екісегментті URL-ге сәйкес келеді.Controller-ге арналған мән Х-ті ескермей, бірінші сегменттен алынады. Action-ге арналған мән екінші сегменттен алынады. Нәтижесі мына түрде болады:

 

Как произвести смешивание статических сегментов маршрута и его стандартныэ значений?

Стандартты мәні URL мәніне сәйкес келетін сегмент болмаған кезде қолданылады. Төмендегі мысал стандартты мәнді қамтитын жолдың үлгісін көрсетеді

using System.Web.Mvc;

using System.Web.Routing;

namespace UrlsAndRoutes

{

public class RouteConfig

{

   public static void RegisterRoutes(RouteCollection routes)

   {

       routes.MapRoute("MyRoute", "{controller}/{action}",

           defaults: new { action = "Index" });

   }

}

}

Стандартты мәндер анонимдік түрінің сипаттары ретінде орнатылады. Мысалда, айнымалы айнымалы үшін стандартты айнымалы индекс берілгенін көруге болады. Бұрынғыдай, бұл маршрут барлық екі сегменттік URL мекенжайларына сәйкес келеді. Мысалы, http: // localhost: 64399 / Home / Index сияқты URL мекен-жайына сұрау жасасаңыз, маршрут Home параметрін контроллер мен индекс үшін әрекет ретінде қайтарады.

Action сегменті үшін стандартты мән берілсе, маршрут бір бөлік URL-ге сәйкес келеді. Бір мәнді URL мекенжайын өңдегенде, маршруттау жүйесі контроллер айнымалы мәнін бір URL сегменттен шығарып алады және әрекет айнымалысы үшін әдепкі мәнді пайдаланады. Бұл жағдайда http: // localhost: 64399 / Home сияқты URL мекен-жайын сұрай аласыз және осылайша Басты контроллердің Index () әдісін шақыра аласыз.
Әрі қарай жалғастыра аламыз және әрекетті және контроллерді анықтаған кезде тек стандартты мәндерге сүйене отырып, кез-келген сегмент айнымалысы жоқ URL-мекен-жайларын анықтай аламыз. Төменде келтірілген мысал үшін, бағдарламаның түбірлік URL-мекенжайы екі сегменттің стандартты мәндерін көрсету арқылы көрсетіледі:

using System.Web.Mvc;

using System.Web.Routing;

namespace UrlsAndRoutes

{

public class RouteConfig

{

   public static void RegisterRoutes(RouteCollection routes)

   {

       routes.MapRoute("MyRoute", "{controller}/{action}",

           defaults: new { action = "Index", controller = "Home" });

   }

}

}

Кіретін URL мекенжайына неғұрлым аз сегменттер кіретін болсақ, онда бізде стандартты мәндерге негізделеді, URL-де сегменттер мүлде жоқ және стандартты мәндер ғана пайдаланылады. Стандартты мәндерді пайдалану нәтижесін үлгі қосымшаны қайта іске қосу арқылы көруге болады; айнымалы контроллер мен қолданылу сегменттеріне арналған бағдарламаның түпкі URL-мекенжайы туралы сұрау браузерде қолданылған кезде стандартты мәндер қолданылатын болады, бұл MVC Framework-ге қоңырау шалу үшін Home controller Index ()

https://professorweb.ru/my/ASP_NET/mvc/level3/3_2.php

 

 


Дата добавления: 2018-02-15; просмотров: 411; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!