Orchard: module 개발 기초 기술 지식
Orchard rendering work
콘텐츠 파트를 만드는 데 필요한 대상들
A content part
이것은 ContentPart 또는 ContentPart (T는 대응하는 record 형식을 나타낸다) 를 계승하는 일반 클래스입니다.데이터베이스를 유지할 필요가 없는 경우 ContentPart를 사용하고, 데이터베이스에 데이터를 저장하려면 ContentPart를 사용합니다.
public
class
MapPart : ContentPart
<
MapRecord
>
{
[Required]
public
double
Latitude
{
get
{
return
Record.Latitude; }
set
{ Record.Latitude
=
value; }
}
[Required]
public
double
Longitude
{
get
{
return
Record.Longitude; }
set
{ Record.Longitude
=
value; }
}
}
A content part record
이것은 간단한 POCO 실체 대상입니다. 이 대상은 파트의 데이터를 대표합니다.Orchard는 베이스 데이터베이스에서 데이터를 가져오고 업데이트하는 것을 책임지기 때문에 리코더를 정의하는 것 외에 다른 일을 할 필요가 없습니다.
public
class
MapRecord : ContentPartRecord
{
public
virtual
double
Latitude {
get
;
set
; }
public
virtual
double
Longitude {
get
;
set
; }
}
A handler
Handler는 Content Handler에서 계승하여 Orchard가 당신의 파트를 어떻게 처리하는지 알려줍니다.
public
class
MapHandler : ContentHandler
{
public
MapHandler(IRepository
<
MapRecord
>
repository)
{
Filters.Add(StorageFilter.For(repository));
}
}
A driver
드라이브를 하나의 콘텐츠 파트의 컨트롤러로 간주할 수 있다.그것은 당신의 파트를 표시하고 편집하는 것을 책임진다.Drivers는 Content Part Driver에서 계승해야 합니다. T는 당신의 콘텐츠 part 유형입니다.다시 로드할 수 있는 방법은 Display와 Editor 두 개입니다.
MVC의 controller actions와 유사합니다. 이 방법은 shape 대상을 되돌려줍니다.Shapes는 매개 변수의 동적 대상 방법을 통해 찾을 수 있습니다.cshtml, 예를 들어/Views/Parts 디렉터리에 MyModule이 존재한다면.MyPart.cshtml 파일은 동적 방법shapeHelper를 통해Parts_MyModule_My Part(...)에서 액세스
public
class
MapDriver : ContentPartDriver
<
MapPart
>
{
protected
override
DriverResult Display(
MapPart part,
string
displayType, dynamic shapeHelper)
{
return
ContentShape(
"
Parts_Map
"
, ()
=>
shapeHelper.Parts_Map(
Longitude: part.Longitude,
Latitude: part.Latitude));
}
//
GET
protected
override
DriverResult Editor(
MapPart part, dynamic shapeHelper)
{
return
ContentShape(
"
Parts_Map_Edit
"
,
()
=>
shapeHelper.EditorTemplate(
TemplateName:
"
Parts/Map
"
,
Model: part,
Prefix: Prefix));
}
//
POST
protected
override
DriverResult Editor(
MapPart part, IUpdateModel updater, dynamic shapeHelper)
{
updater.TryUpdateModel(part, Prefix,
null
,
null
);
return
Editor(part, shapeHelper);
}
}
Display shapes
여기가 바로 Razor 보기입니다.cshtml 파일, 명명약정에 따라 표시된 템플릿은/Views/Parts 디렉터리에 존재하고, Editor driver 방법을 되돌릴 때의 템플릿은/Views/EditorTemplates/Parts 디렉터리에 존재합니다.
<
img alt
=
"
Location
"
border
=
"
1
"
src
=
"
http://maps.google.com/maps/api/staticmap?
&
zoom
=
12
&
size
=
50
0x500
&
maptype
=
roadmap
&
markers
=
color:blue
|
@Model.Latitude,@Model.Longitude
&
sensor
=
false
"
/>
Data migration
이것은 데이터베이스를 정의하는 곳이다.일반적으로 Orchard 명령줄에 codegen datamigration을 입력하여 디렉토리를 생성합니다.여기에는 일부 설정 등도 변경할 수 있다.
public
class
Migrations : DataMigrationImpl
{
public
int
Create()
{
//
Creating table MapRecord
SchemaBuilder.CreateTable(
"
MapRecord
"
, table
=>
table
.ContentPartRecord()
.Column(
"
Latitude
"
, DbType.Double)
.Column(
"
Longitude
"
, DbType.Double)
);
ContentDefinitionManager.AlterPartDefinition(
typeof
(MapPart).Name, cfg
=>
cfg.Attachable());
return
1
;
}
}
추천: 필요할 수 있는 온라인 전자책
나의 시나닷컴 목도리:http://t.sina.com.cn/openexpressapp
전재를 환영합니다. 전재는 주금근에서 전재합니다[http://zhoujg.cnblogs.com/]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
양식 제출 후 제출 버튼 비활성화텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.