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

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

.pdf
Скачиваний:
40
Добавлен:
09.03.2016
Размер:
1.23 Mб
Скачать

`

SURWHFWHG RYHUULGH YRLG ,QLWLDOL]H5HTXHVW&RQWH[W UHTXHVW&RQWH[W

^

&XOWXUH,QIR FL QHZ&XOWXUH,QIRUX

7KUHDG &XUUHQW7KUHDG &XUUHQW&XOWXUH FL

EDVH,QLWLDOL]H UHTXHVW&RQWH[W

`

`

И /Areas/Admin/Controller/HomeController.cs:

>$XWKRUL]H 5ROHV DGPLQ@

SXEOLF FODVV +RPH&RQWUROOHU $GPLQ&RQWUROOHU

^

SXEOLF $FWLRQ5HVXOW,QGH[

^

UHWXUQ9LHZ

`

SXEOLF $FWLRQ5HVXOW$GPLQ0HQX

^

UHWXUQ9LHZ

`

SXEOLF $FWLRQ5HVXOW/DQJ0HQX

^

LI&XUUHQW/DQJ QXOO

^

YDUODQJ UHSRVLWRU\ /DQJXDJHV )LUVW2U'HIDXOW

UHSRVLWRU\ &KDQJH/DQJXDJH FXUUHQW8VHU ODQJ &RGH

`

YDUODQJ3UR[\ QHZ/DQJ$GPLQ9LHZ UHSRVLWRU\ &XUUHQW/DQJ &RGH

UHWXUQ9LHZ ODQJ3UR[\

`

>+WWS3RVW@

SXEOLF $FWLRQ5HVXOW&KDQJH/DQJXDJH VWULQJ6HOHFWHG/DQJ

^

UHSRVLWRU\ &KDQJH/DQJXDJH FXUUHQW8VHU 6HOHFWHG/DQJ

UHWXUQ5HGLUHFWa DGPLQ

`

`

Итак, AdminController выбирает и устанавливает, в каком языке мы сейчас работаем. Если данный язык не установлен, то выбирается первый попавшийся, и в HomeController.cs:LangMenu устанавливается для пользователя. Создадим LangAdminView.cs (/Models/ViewModel/LangAdminView.cs):

SXEOLF FODVV /DQJ$GPLQ9LHZ

^

SULYDWH,5HSRVLWRU\ 5HSRVLWRU\

^

JHW

^

UHWXUQ'HSHQGHQF\5HVROYHU &XUUHQW *HW6HUYLFH ,5HSRVLWRU\!

`

`

SXEOLF VWULQJ6HOHFWHG/DQJ ^JHW VHW`

SXEOLF/LVW 6HOHFW/LVW,WHP! /DQJV ^JHW VHW`

SXEOLF /DQJ$GPLQ9LHZ VWULQJFXUUHQW/DQJ

^

FXUUHQW/DQJ FXUUHQW/DQJ ""

/DQJV QHZ/LVW 6HOHFW/LVW,WHP!

IRUHDFK YDUODQJLQ5HSRVLWRU\ /DQJXDJHV

^

/DQJV$GGQHZ6HOHFW/LVW,WHP

^

6HOHFWHG VWULQJ&RPSDUH FXUUHQW/DQJ ODQJ &RGHWUXH

9DOXH ODQJ &RGH

7H[W ODQJ 1DPH

`

`

`

`

Опишем все View (+js­файлы): /Areas/Admin/Views/Shared/_Layout.cshtml:

#^

YDU FXUUHQW8VHU /HVVRQ3URMHFW &RQWUROOHUV %DVH&RQWUROOHU 9LHZ&RQWH[W &RQWUROOHU &XUUHQW8

VHU

`

'2&7<3( KWPO!

KWPO!

KHDG!

WLWOH!#9LHZ%DJ 7LWOHWLWOH!

PHWD KWWS HTXLY &RQWHQW 7\SH FRQWHQW WH[W KWPO FKDUVHW 87)!

#6W\OHV 5HQGHU a &RQWHQW FVV MTXHU\XL

#6W\OHV 5HQGHU a &RQWHQW FVV

#5HQGHU6HFWLRQ VW\OHV UHTXLUHG IDOVH

#6FULSWV 5HQGHU a EXQGOHV PRGHUQL]U

KHDG!

ERG\!

GLY FODVV QDYEDU QDYEDU IL[HG WRS!

GLY FODVV QDYEDU LQQHU!

GLY FODVV FRQWDLQHU IOXLG!

GLY FODVV EWQ JURXS SXOO ULJKW!

D FODVV EWQ GURSGRZQ WRJJOH GDWD WRJJOH GURSGRZQ KUHI !L FODVV LFR Q XVHU!

L!

#FXUUHQW8VHU (PDLOVSDQ FODVV FDUHW!VSDQ!

D!

XO FODVV GURSGRZQ PHQX!

OL!D KUHI !ɇɚ ɫɚɣɬD!OL!

OL FODVV GLYLGHU!OL!

OL!D KUHI #8UO$FWLRQ /RJRXW /RJLQ QHZ^DUHD 'HIDXOW` !ȼɵ ɯɨɞD!

OL!

XO!

GLY!

D FODVV EUDQG KUHI #8UO$FWLRQ ,QGH[ +RPH!/HVVRQ3URMHFWD!

GLY!

GLY!

GLY!

GLY FODVV FRQWDLQHU IOXLG!

GLY FODVV URZ IOXLG!

GLY FODVV VSDQ!

GLY FODVV ZHOO VLGHEDU QDY!

XO FODVV QDY QDY OLVW!

#+WPO$FWLRQ /DQJ0HQX +RPH

#+WPO$FWLRQ$GPLQ0HQX +RPH

XO!

GLY!

GLY!

GLY FODVV VSDQ!

#5HQGHU%RG\

GLY!

GLY!

GLY!

#6FULSWV 5HQGHU a EXQGOHV MTXHU\

#6FULSWV 5HQGHU a EXQGOHV MTXHU\XL

#6FULSWV 5HQGHU a EXQGOHV ERRWVWUDS

#6FULSWV 5HQGHU a EXQGOHV FRPPRQ

#6FULSWV 5HQGHU 6FULSWV DGPLQ FRPPRQ MV

#5HQGHU6HFWLRQ VFULSWV UHTXLUHG IDOVH

ERG\!

KWPO!

Index.cshtml (/Areas/Admin/Views/Home/Index.cshtml):

#^

9LHZ%DJ 7LWOH ,QGH[

/D\RXW a$UHDV$GPLQ 9LHZV 6KDUHG B/D\RXW FVKWPO

`

K!ȺɞɦɢɧɤɚK!

$GPLQ0HQX FVKWPO$UHDV$GPLQ 9LHZV +RPH$GPLQ0HQX FVKWPOOL!

#+WPO$FWLRQ/LQN Ƚɥɚɜɧɚɹ ,QGH[ +RPHOL!

OL!

#+WPO$FWLRQ/LQN ɉɨɫɬɵ ,QGH[ 3RVWOL!

LangMenu.cshtml (/Areas/Admin/Views/Home/LangMenu.cshtml):

#PRGHO /HVVRQ3URMHFW 0RGHOV 9LHZ0RGHOV /DQJ$GPLQ9LHZ

OL!

#XVLQJ +WPO %HJLQ)RUP &KDQJH/DQJXDJH +RPH )RUP0HWKRG 3RVW QHZ ^ LG 6HOHFW/DQJ)RUP `

^

#+WPO 'URS'RZQ/LVW 6HOHFWHG/DQJ 0RGHO /DQJV

`

OL!

И обработчик SelectedLang (/Scripts/admin/common.js):

IXQFWLRQ $GPLQ&RPPRQ

^

BWKLV WKLV

WKLVLQLW IXQFWLRQ

^

6HOHFWHG/DQJFKDQJHIXQFWLRQ^

6HOHFW/DQJ)RUPVXEPLW

`

`

`

YDUDGPLQ&RPPRQ QXOO

UHDG\IXQFWLRQ^

DGPLQ&RPPRQ QHZ $GPLQ&RPPRQ

DGPLQ&RPPRQ LQLW

`

Заходим под админом (у меня это chernikov@gmail.com) и переходим на страницу localhost/admin:

Если не удалось зайти и выкинуло на /Login, то проверьте связь UserRole в БД, чтобы текущий пользователь имел роль с кодом “admin”.

Открываем выпадающий список языков. Он и показывает, в каком языке мы в данный момент работаем.

Добавляем контроллер PostController.cs (/Areas/Admin/Controllers/PostController.cs):

SXEOLF FODVV 3RVW&RQWUROOHU $GPLQ&RQWUROOHU

^

SXEOLF $FWLRQ5HVXOW,QGH[ LQWSDJH

^

YDUOLVW 5HSRVLWRU\ 3RVWV 2UGHU%\'HVFHQGLQJ S ! S$GGHG'DWH

YDUGDWD QHZ3DJHDEOH'DWD 3RVW! OLVW SDJH

GDWD /LVW )RU(DFK S ! S &XUUHQW/DQJ &XUUHQW/DQJ ,'

UHWXUQ9LHZ GDWD

`

>+WWS*HW@

SXEOLF $FWLRQ5HVXOW&UHDWH

^

YDUSRVW9LHZ QHZ3RVW9LHZ

^

&XUUHQW/DQJ &XUUHQW/DQJ ,'

`

UHWXUQ9LHZ(GLWSRVW9LHZ

`

>+WWS*HW@

SXEOLF $FWLRQ5HVXOW(GLW LQWLG

^

YDUSRVW 5HSRVLWRU\ 3RVWV )LUVW2U'HIDXOW S ! S ,' LG

LISRVW QXOO

^

SRVW &XUUHQW/DQJ &XUUHQW/DQJ ,'

YDUSRVW9LHZ 3RVW9LHZ 0RGHO0DSSHU 0DS SRVWW\SHRI3RVWW\SHRI3RVW9LHZ

UHWXUQ9LHZ SRVW9LHZ

`

UHWXUQ5HGLUHFW7R1RW)RXQG3DJH

`

>+WWS3RVW@

>9DOLGDWH,QSXWIDOVH@

SXEOLF $FWLRQ5HVXOW(GLW3RVW9LHZ SRVW9LHZ

^

LI0RGHO6WDWH ,V9DOLG

^

YDUSRVW 3RVW 0RGHO0DSSHU 0DS SRVW9LHZW\SHRI3RVW9LHZW\SHRI3RVW

SRVW &XUUHQW/DQJ &XUUHQW/DQJ ,'

LISRVW ,'

^

SRVW 8VHU,' &XUUHQW8VHU ,'

5HSRVLWRU\ &UHDWH3RVW SRVW

`

HOVH

^

5HSRVLWRU\ 8SGDWH3RVW SRVW

`

7HPS'DWD>0HVVDJH@ ɋɨɯɪɚɧɟɧɨ

UHWXUQ5HGLUHFW7R$FWLRQ,QGH[

`

UHWXUQ9LHZ SRVW9LHZ

`

SXEOLF $FWLRQ5HVXOW'HOHWH LQWLG

^

5HSRVLWRU\ 5HPRYH3RVW LG

7HPS'DWD>0HVVDJH@ ɍɞɚɥɟɧ ɩɨɫɬ

UHWXUQ5HGLUHFW7R$FWLRQ,QGH[

`

`

Изменим PageableData, чтобы можно было сделать Foreach (/Models/Info/PageableData.cs):

SXEOLF FODVV 3DJHDEOH'DWD 7!ZKHUH 7 FODVV

^

SURWHFWHG VWDWLF LQW,WHP3HU3DJH'HIDXOW

SXEOLF/LVW 7! /LVW ^JHW VHW`

«

SXEOLF 3DJHDEOH'DWD,4XHU\DEOH 7! TXHU\DEOH6HWLQWSDJHLQWLWHP3HU3DJH

^

«

/LVW TXHU\DEOH6HW 6NLS 3DJH1R LWHP3HU3DJH 7DNH LWHP3HU3DJH 7R/LVW

`

`

Index.cshtml (/Areas/Admin/Views/Post/Index.cshtml):

#PRGHO /HVVRQ3URMHFW 0RGHOV ,QIR 3DJHDEOH'DWD/HVVRQ3URMHFW 0RGHO 3RVW!

#^

9LHZ%DJ 7LWOH ɉɨɫɬɵ

/D\RXW a$UHDV$GPLQ 9LHZV 6KDUHG B/D\RXW FVKWPO

`

K!

ɉɨɫɬɵ

K!

#+WPO$FWLRQ/LQN Ⱦɨɛɚɜɢɬɶ &UHDWH 3RVW QXOO QHZ ^ #FODVV EWQ `WDEOH FODVV WDEOH!

WKHDG!

WU!

WK!

WK!

WK!

ɩɟɪɟɜɨɞ

WK!

WK!

ɇɚɢɦɟɧɨɜɚɧɢɟ

WK!

WK!

WK!

WU!

WKHDG!

#IRUHDFK YDU LWHP LQ 0RGHO /LVW

^

WU!

WG!

#LWHP ,'

WG!

WG!

# LWHP ,V&RUUHFW/DQJ " ɧɭɠɟɧ ɩɟɪɟɜɨɞ

WG!

WG!

#LWHP +HDGHU

WG!

WG!

#+WPO$FWLRQ/LQN ɂɡɦɟɧɢɬɶ (GLW 3RVW QHZ ^ LG LWHP ,' ` QHZ ^ #FODVV EWQ EWQ PLQL `

#+WPO$FWLRQ/LQN ɍɞɚɥɢɬɶ 'HOHWH 3RVW QHZ ^ LG LWHP ,' ` QHZ ^ #FODVV EWQ EWQ PLQL EWQ GDQJHU `

WG!

WU!

`

WDEOH!

При инициализации в ForEach, в каждом объекте уже инициализируются языковые поля. Язык – тот, с которым в данный момент работаем в админке.

View для редактирования тривиальна, так как мы всю работу делаем в Controller, а наш PostView

уже использует языковые настройки. (/Areas/Admin/Views/Post/Edit.cshtml):

#PRGHO /HVVRQ3URMHFW 0RGHOV 9LHZ0RGHOV 3RVW9LHZ

#^

9LHZ%DJ 7LWOH 0RGHO ,' " Ⱦɨɛɚɜɢɬɶ ɩɨɫɬ ɂɡɦɟɧɢɬɶ ɩɨɫɬ

/D\RXW a$UHDV$GPLQ 9LHZV 6KDUHG B/D\RXW FVKWPO

`

K!# 0RGHO ,' " Ⱦɨɛɚɜɢɬɶ ɩɨɫɬ ɂɡɦɟɧɢɬɶ ɩɨɫɬK!S!

S! #XVLQJ +WPO %HJLQ)RUP (GLW 3RVW )RUP0HWKRG 3RVW

^

#+WPO +LGGHQ ,' 0RGHO ,'

ILHOGVHW!

GLY FODVV FRQWURO JURXS!

ODEHO FODVV FRQWURO ODEHO!

# 0RGHO ,V&RUUHFW/DQJ 0RGHO ,' " ɧɭɠɟɧ ɩɟɪɟɜɨɞ

ODEHO!

GLY!

GLY FODVV FRQWURO JURXS!

ODEHO FODVV FRQWURO ODEHO!

ɁɚɝɨɥɨɜɨɤODEHO!

GLY FODVV FRQWUROV!

#+WPO 7H[W%R[ +HDGHU 0RGHO +HDGHU QHZ ^ #FODVV LQSXW [ODUJH `

#+WPO 9DOLGDWLRQ0HVVDJH +HDGHU

GLY!

GLY!

GLY FODVV FRQWURO JURXS!

ODEHO FODVV FRQWURO ODEHO!

8UOODEHO!

GLY FODVV FRQWUROV!

#+WPO 7H[W%R[ 8UO 0RGHO 8UO QHZ ^ #FODVV LQSXW [ODUJH `

#+WPO 9DOLGDWLRQ0HVVDJH 8UO

GLY!

GLY!

GLY FODVV FRQWURO JURXS!

ODEHO FODVV FRQWURO ODEHO!

ɋɨɞɟɪɠɢɦɨɟODEHO!

GLY FODVV FRQWUROV!

#+WPO 7H[W$UHD &RQWHQW 0RGHO &RQWHQW QHZ ^ #FODVV LQSXW [ODUJH `

#+WPO 9DOLGDWLRQ0HVVDJH &RQWHQW

GLY!

GLY!

GLY FODVV IRUP DFWLRQV!

EXWWRQ W\SH VXEPLW FODVV EWQ EWQ SULPDU\!

ɋɨɯɪɚɧɢɬɶEXWWRQ!

#+WPO$FWLRQ/LQN Ɉɬɦɟɧɢɬɶ ,QGH[ QXOO QXOO QHZ ^ #FODVV EWQ `

GLY!

ILHOGVHW!

`

Обратите внимание на подсказку о необходимости перевода. В данном случае, поля уже будут заполнены, и их нужно перевести и сохранить. Таким образом, будет добавлен перевод. Добавляем пару постов и переводим их:

Ок, посты созданы.

Создадим PostController в Default Area и выведем посты (/Areas/Default/Controller/PostController.cs):

SXEOLF FODVV 3RVW&RQWUROOHU 'HIDXOW&RQWUROOHU

^

SXEOLF $FWLRQ5HVXOW,QGH[ LQWSDJH

^

YDUOLVW 5HSRVLWRU\ 3RVWV 2UGHU%\'HVFHQGLQJ S ! S$GGHG'DWH

YDUGDWD QHZ3DJHDEOH'DWD 3RVW! OLVW SDJH

GDWD /LVW )RU(DFK S ! S &XUUHQW/DQJ &XUUHQW/DQJ ,'

UHWXUQ9LHZ GDWD

`

`

Index.cshtml (/Areas/Default/Views/Post/Index.cshtml):

#PRGHO /HVVRQ3URMHFW 0RGHOV ,QIR 3DJHDEOH'DWD/HVVRQ3URMHFW 0RGHO 3RVW!

#^

9LHZ%DJ 7LWOH ,QGH[

/D\RXW a$UHDV 'HIDXOW 9LHZV 6KDUHG B/D\RXW FVKWPO

`

GLY FODVV LWHP! #IRUHDFK YDU SRVW LQ 0RGHO /LVW

^

K!#SRVW +HDGHUK!

S!

#SRVW &RQWHQW 1O7R%U

S!

VSDQ!#SRVW$GGHG'DWH 7R6WULQJ GVSDQ!

`

GLY!

GLY FODVV SDJLQDWLRQ!

#+WPO 3DJH/LQNV 0RGHO 3DJH1R 0RGHO &RXQW3DJH [ ! 8UO$FWLRQ ,QGH[ QHZ ^SDJH [`GLY!

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