Как определять необязательные сегменты URL? Приведите примеры необязательных сегментов.



Стандартты URL сұралымы (запрос) кезінде қателіктің болу себебі URL алдыңғы анықталған маршрутпен сәйкес келмейтінінде. Стандартты URL маршрутизация жүйесінде « ̴ /» осылай белгіленеді және бұл жолда controller және action айнымалыларымен сәйкес келетін ешқандай сегмент жоқ. Стандартты мағына (defaults) URL - мен сәйкес келер мағына болмағанда қолданылады. Қосымша (міндетті емес)URL сегменті - пайдаланушы анықтай алмайтын сегмент, бірақ стандартты мән берілмейді. Қосымша (міндетті емес)URL сегментке мысал:

using System.Web.Mvc;

using System.Web.Routing;

Namespace UrlsAndRoutes

{public class RouteConfig

{ public static void RegisterRoutes(RouteCollection routes)

   {routes.MapRoute(

           name: "MyRoute",

           url: "{controller}/{action}/{id}",

           defaults: new { controller = "Home", action = "Index",

 id = UrlParameter.Optional });}}}

Бұл маршрут id сегменті бар немесе жоқ URL-мен сәйкес келеді.

URL-дің қосымша (міндетті емес) сегменті бар айнымалы мен сәйкестігі

Сегменттер саны URL мысалдары Онда не бейнеленеді?
0 mysite.com controller= Home, action = Index
1 mysite.com/Admin controller= Admin, action = Index
2 mysite.com/Admin/List controller= Admin, action = List
3 mysite.com/Admin/List/All controller= Admin, action = List, id=All
4 mysite.com/Admin/List/All/Delete Сегменттер көп, сәйкестік жоқ

 

Кестеде айнымалы id кіріс URL мекенжайында тиісті сегмент болған кезде ғана айнымалы жиынтыққа қосылатынын көрсетеді. Бұл пайдаланылатын мүмкіндік айнымалы мәнін берген-бермегенін білу кезінде пайдалы. Егер қосымша(необязательный) сегмент айнымалысы үшін ешқандай мән көрсетілмесе, тиісті параметрдің мәні бос (null).

Перечислите соответствия URL с необязательными переменными сегмента.

URL-дағы барлық сегменттер айнымалылар болып келмейді.Сонымен қатар статикалық сегменті бар паттерндер құра аламыз.Егер бізге URL-мен сәйкес келетін URL қолдауы табылса онда PUBLIC-тен басталады:

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

Біз мұны келесі паттерн арқылы жасаймыз.

 URL паттерн статикалық сегментпен:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Routing;

namespace UrlsAndRoutes

{

public class RouteConfig

{

public static void RegisterRoutes(RouteCollection routes)

{

routes.MapRoute("ShopSchema","Shop/{action}",

     new{ controller ="Home"});

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

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

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

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

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

}

}

}

Біз қосқан Роут бірінші сегменті Shop болатын кез келген екісегментті

URL-ге сәйкес келеді. Action мәні URL-дің екінші сегментінен алынады. URL

Паттернінің сегменті controller үшін жоқ, сондықтан , келісім бойынша берілген мән қолданылады. Бұл Shop контроллері әрекетіне арналған сұраныс Home контроллеріне арналған сұранысқа алып келеді. Бұл роуттың қолдану нәтижесін көру үшін қосымша қосу және /Shop/Index URL бойынша жүргізу керек. Біз қосқан роут Home контроллеріндегі Index әрекетіне бейімделуге апарады.

Как осуществляется получение исходных данных в приложении, созданного по технологии ASP.NET MVC?

Получение данных между контроллером и представлением

Чтобы отобразить представление, используется метод View контроллера. Для передачи данных представлению используется свойство ViewData класса ViewPage. Это свойство возвращает объект ViewDataDictionary, содержащий учитывающие регистр строковые ключи. Для передачи данных в представление можно записывать данные в словарь, как показано в следующем примере:

C#

Dim petList As List(Of String) = New List(Of String)petList.Add("Dog")petList.Add("Cat")petList.Add("Hamster")petList.Add("Parrot")petList.Add("Gold fish")petList.Add("Mountain lion")petList.Add("Elephant") ViewData("pets") = New SelectList(petList)

Если метод View вызывается без параметров (как в предыдущем примере), свойство ViewData объекта контроллера передается в представление, имеющее то же имя, что и метод действия.

На странице представления можно обратиться к свойству ViewData, чтобы получить данные, переданные представлению. Свойство ViewData — это словарь, поддерживающий индексатор, принимающий ключи словаря.

В следующем примере показана разметка для представления, отображающего данные в форме HTML и дающего пользователю возможность изменять значения и делать выбор.

C#


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

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






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