Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ASP.NET MVC Урок 1-F / ASP.NET MVC Урок 8

.pdf
Скачиваний:
42
Добавлен:
09.03.2016
Размер:
573.27 Кб
Скачать

ILOWHU&RQWH[W 5HVXOW 5HGLUHFW (UURU3DJH

`

Теперь можно использовать свойства RedirectToNotFoundPage и RedirectToLoginPage UserController (/Areas/Default/Controllers/UserController.cs) так:

>$XWKRUL]H@

SXEOLF $FWLRQ5HVXOW(GLW LQWLG

^

YDUXVHU 5HSRVLWRU\ 8VHUV )LUVW2U'HIDXOW S ! S ,' LG

LIXVHU QXOO

^

LI&XUUHQW8VHU ,Q5ROHVDGPLQ __&XUUHQW8VHU ,' LG

^

Ɋɚɡɪɟɲɟɧɨ ɪɟɞɚɤɬɢɪɨɜɚɧɢɟ

UHWXUQ9LHZ XVHU

`

UHWXUQ5HGLUHFW7R/RJLQ3DJH

`

UHWXUQ5HGLUHFW7R1RW)RXQG3DJH

`

Обратите внимание, изначально необходимо быть авторизованным в системе, но редактирование разрешено только самому пользователю, котого эти данные или пользователю с правами админа. Добавим обработку ошибки и 404­страницу. Создадим контроллер, но не будем его наследовать от %DVH&RQWUROOHU, чтобы ненароком не зацепить еще какую­нибудь ошибку. Добавим пути маршрутов в обработку (/Areas/Default/DefaultAreaRegistration.cs):

FRQWH[W 0DS5RXWH

QXOO

XUO(UURU

GHIDXOWVQHZ^ FRQWUROOHU (UURUDFWLRQ ,QGH[LG 8UO3DUDPHWHU 2SWLRQD O `

QDPHVSDFHVQHZ>@ ^/HVVRQ3URMHFW$UHDV 'HIDXOW &RQWUROOHUV`

FRQWH[W 0DS5RXWH

QXOO

XUO1RW)RXQG3DJH

GHIDXOWVQHZ^ FRQWUROOHU (UURUDFWLRQ 1RW)RXQG3DJHLG 8UO3DUDPHWH U 2SWLRQDO `

QDPHVSDFHVQHZ>@ ^/HVVRQ3URMHFW$UHDV 'HIDXOW &RQWUROOHUV`

Контроллер (/Areas/Default/Controllers/ErrorController.cs):

SXEOLF FODVV (UURU&RQWUROOHU &RQWUROOHU

^

SXEOLF $FWLRQ5HVXOW,QGH[

^

5HVSRQVH 6WDWXV&RGH LQW+WWS6WDWXV&RGH ,QWHUQDO6HUYHU(UURU

UHWXUQ9LHZ

`

SXEOLF $FWLRQ5HVXOW1RW)RXQG3DJH

^

5HVSRQVH 6WDWXV&RGH LQW+WWS6WDWXV&RGH 1RW)RXQG

UHWXUQ9LHZ

`

`

Добавляем простейшую страницу ошибки View (/Areas/Default/Views/Error/Index.cshtml):

#^

/D\RXW QXOO

`

'2&7<3( KWPO!

KWPO!

KHDG!

PHWD QDPH YLHZSRUW FRQWHQW ZLGWK GHYLFH ZLGWK!

WLWOH!,QGH[WLWOH!KHDG!

ERG\!

GLY!

ɈɲɢɛɤɚEU!

D KUHI !ȼɟɪɧɭɬɶɫɹ ɧɚ ɝɥɚɜɧɭɸD!

GLY!ERG\!KWPO!

Аналогичная страница 404 (/Areas/Default/Views/Error/NotFoundPage.cshtml).

Другие ActionResult

ActionResult не обязательно может возвращать View. Рассмотрим другие примеры:

Content(result) – возвращает простой текст в http­ответе

JsonResult(object) – возвращает объект в формате json (далее рассмотрим)

FileContentResult() – возвращает ресурс для скачивания Отправляет в ответ содержимое файла. (источник — мсдн)

FilePathResult() – возвращает файл, расположенный по указанному пути

FileStreamResult() – возвращает в файле записанный поток

RedirectResult() – переправляет на указанную страницу RedirectToRouteResult() – переправляет на страницу по новому указанному пути

RssActionResult

RSS – это XML формат, предназначенный для описания лент новостей, статей, блогов. У нас пока нет постов, так что мы просто создадим RssActionResult. В6\VWHP 6HUYLFH0RGHO 6\QGLFDWLRQ – это набор инструментов для работы с RSS. Нам необходимы SyndicationFeed и SyndicationItem. Подключим System.ServiceModel в reference, создадим новый контроллер

(/Areas/Default/Controllers/FeedController.cs):

SXEOLF FODVV )HHG&RQWUROOHU 'HIDXOW&RQWUROOHU

^

SXEOLF $FWLRQ5HVXOW,QGH[

^

YDUKRVW 5HTXHVW 8UO

YDUIHHG

QHZ6\QGLFDWLRQ)HHG6LWH 566

QHZ8UL KRVW$EVROXWH8UL)HHG

YDULWHPV QHZ/LVW 6\QGLFDWLRQ,WHP!

YDULWHP QHZ6\QGLFDWLRQ,WHP

7LWOH

FRQWHQW

QHZ8ULKWWSKRVWVRPH OLQN XUO

7LWOH

'DWH7LPH 1RZ

LWHPV$GG LWHP

IHHG ,WHPV LWHPV

UHWXUQ9LHZ

`

`

Абсолютно тестовые данные, одно значение на нерабочую ссылку. Создадим RssActionResult (/Global/RssActionResult.cs):

SXEOLF FODVV 5VV$FWLRQ5HVXOW $FWLRQ5HVXOW

^

SXEOLF6\QGLFDWLRQ)HHG )HHG ^JHW VHW`

SXEOLF RYHUULGH YRLG ([HFXWH5HVXOW&RQWUROOHU&RQWH[W FRQWH[W

^

FRQWH[W +WWS&RQWH[W 5HVSRQVH &RQWHQW7\SH DSSOLFDWLRQ UVV [PO

YDUUVV)RUPDWWHU QHZ5VV )HHG)RUPDWWHU )HHG

XVLQJ YDUZULWHU ;PO:ULWHU &UHDWH FRQWH[W +WWS&RQWH[W 5HVSRQVH 2XWSXW

^

UVV)RUPDWWHU :ULWH7R ZULWHU

`

`

`

Основным параметром является Feed, куда передается уже сформированный Feed. Сам

ActionResult вызывает ExecuteResult(). Мы используем Rss20FeedFormatted для записи xml в Response.Output. Response.Output – это stream, куда записывая данные обрабатываются браузером как ответ. Для того чтобы браузер понимал, какой именно тип данных мы передаем,

мы присваиваем в 5HVSRQVH &RQWHQW7\SH ³DSSOLFDWLRQ UVV [PO´

Возвращаем наш RssActionResult (/Areas/Default/Controllers/FeedController.cs):

«

UHWXUQ QHZ5VV$FWLRQ5HVXOW ^)HHG IHHG `

Запускаем:

Если установить RSS Subscription Extension (by Google), то наш RSS­канал отобразится в

браузере, и мы сможем на него подписаться.:

Можете попробовать реализовать Sitemap вывод. Вот протоколhttp://www.sitemaps.org/protocol.html, описывающий формат.

Все исходники находятся по адресу https://bitbucket.org/chernikov/lessons

Соседние файлы в папке ASP.NET MVC Урок 1-F