2014-09-08 2 views
4

뷰를 만들 때 HTML과 모델/컨트롤러의 데이터 외에 다른 코드를 넣으면 안된다.동적 내용으로 부분 뷰 만들기

하지만 여러 뷰에서 사용할 수있는 동적으로 생성 된 HTML이 잘려져 있다고 가정 해 봅시다. 프로젝트의 공유 폴더에있는 부분 뷰일 것입니다. 그러나 부분 뷰이기 때문에 db (동적 데이터)의 전파를 처리하는 절대 컨트롤러가없고, 어떻게 호출해야하며, db에서 뷰 (또는 모델) 로의 데이터 전파를 어디에 코딩해야합니까? 부분 뷰가 table.id=n 등의 콘텐츠를 동적으로 렌더링한다고 가정하면

저는 매우 새롭고이를 수행하는 방법을 찾기 위해 .net의 튜토리얼을 작성하고 있습니다. 누구나 어떻게 완료했는지 알 수 있습니까? 희망이 질문을 의미합니다.

+0

모델을 부분으로 전달할 수 있으므로보기에서 모델을 수행 한 것과 다를 바 없습니다. – MikeSmithDev

+0

어디에서 해당 모델을 전파합니까? db –

+0

의 데이터를 전달할 컨트롤러가 없습니다. 뷰의 모델을 만든 컨트롤러에서. – MikeSmithDev

답변

0

면도기 뷰 엔진을 사용하는 것으로 가정하면 파일을 도우미 기능이있는 App_Code 폴더에 넣을 수 있습니다.

구문은 다음과 같이이다 : 당신이 도우미로 매개 변수를 전달할 수 있기 때문에

@helper FormatDate(DateTime date) 
{ 
    @date.ToShortDateString() 
} 

당신은 (파일을 가정하는 것은 Utility.cshtml입니다)

@Utility.FormatDate(Patient.DOB) 

과 같이 호출, 당신은 통과 할 수 복잡한 객체를 포함하여 필요한 모든 유형.

+0

예, 면도기를 사용하고 있지만 App_Code 폴더가 없지만 현재 비어있는 App_Data 폴더를 볼 수 있습니까? –

+0

그런 다음 App_Code 폴더를 만듭니다. –

+0

흠, 좋아. 그래서 당신이 제공 한이 예제는 부분적인 뷰 또는 다른 것입니까? –

1

항상 부분 모델을 정의 할 수 있습니다.

그리고 당신은 그 모델의 dinamically 인구 예를 통과하는 컨테이너보기에서 부분적으로 렌더링 할 수 있습니다 새로운 전달, 나는 @Html.Partial() 방법을 사용하여 index.cshtml에서 부분 _FileUploader.cshtml를 호출이 간단한 예에서

<!-- index.cshtml --> 
<h1>Feed Upload</h1> 
<div id="uploader"> 
     @Html.Partial("~/Views/Shared/Controls/_FileUploader.cshtml", new FileUploaderModel() { UploaderClassName = this.Model.UploaderClassName }) 
</div> 

을 UploaderClassName 값을 지정하는 모델 인스턴스입니다. 편집

this.Model.UploaderClassName

컨테이너을 의미의 모델과는 컨테이너 내부 초기화의 컨트롤러 사업. 물론 컨테이너의 컨트롤러는 db에서 동적 데이터를 가져 와서 부분 모델에 전달하기 위해 모든 데이터 액세스 논리를 실행할 수 있습니다.

MSDNthis article에서 확인하십시오.

+0

그래서 컨트롤러를 사용하지 않고 모델 자체에서 db로부터 모델 데이터를 전파하고 있습니까? –

0

최근에이 일을하기 위해 너겟 패키지를 게시했습니다. 동적 MVC라고합니다.

http://dynamicmvc.com

당신은 코드 플렉스의 소스 코드를 볼 수 있습니다.

https://dynamicmvc.codeplex.com

내가 이런 짓을하는 방법은 나를 약하게 입력 방식으로 모든 속성에 대한 값을 얻을 수 있도록 MVC에 내장 된 ModelMetadata 엔진을 사용하는 것이 었습니다.ModelMetadata 엔진은 원래 ASP.net Dynamic Data에서 왔으며 MVC2에서 MVC로 이식되었습니다. 그것은 이런 상황에 아주 좋습니다.