2012-06-19 2 views
2

입니다. 모든 검색 작업에도 불구하고 일부 기본 MVC 개념에 대한 이해가 부족합니다.부분보기 : "사전에 전달 된 모델 항목은"

Visual Studio에서 _LogOnPartial.shtml 부분보기가 포함 된 MVC 프로젝트를 만들었습니다. 나는 사용자 드롭 다운 메뉴를 넣기 위해 사용자와 관련된 뷰 내의 정보에 액세스하려고합니다. 나는 부분보기 cshtml 페이지의 상단에 이것을 넣어하려고 할 때 위의 오류를 얻을 :

@model MyProject_MVC.Models.UserRepository 

나는 또한 오류가이 작업을 할 때 :

@Html.Partial("_LogOnPartial", MyProject_MVC.Models.UserRepository) 

'MyProject_MVC.Models을. 요

마지막 부분 @model MyProject_MVC.Models.UserRepository : UserRepository는

+0

귀하의 모델은 실제로 저장소가 아니어야합니다. 예를 들어 리포지토리의 결과입니다. 모델". – jrummell

답변

2

부분보기에 MyProject_MVC.Models.UserRepository의 인스턴스를 제공해야합니다. _LogOnPartial은 해당 유형에 대해 유형이 강합니다. 이를 통해 컴파일 타임에 공개 멤버에 액세스하고보기에 표시하는 방법을 결정할 수 있습니다.

해당보기에서 고유 한 형식을 사용하려면 먼저 강력한 형식의 형식을 변경해야합니다.

@model MyProject_MVC.Models.UserRepository 

그런 다음 당신은 당신의 행동 방식에 해당 유형의 인스턴스를 생성하고 모델 또는 모델의 속성으로 볼에 전달해야합니다.

public ActionResult LogOn() 
{ 
    return View(new UserRepository()); 
} 

이제보기에서 모델 개체로이 인스턴스에 액세스 할 수 있습니다.

@Html.Partial("_LogOnPartial", Model); 
+0

고마워,하지만 난 아직도 기본적인 이해가 부족하다. 나는 모든 페이지가 다르며 자체 데이터 모델을 가지고있을 때 로그인 페이지의 액션 메소드에서 UserRepository를 반환하는 것을 이해하지 못합니다. 예를 들어 갤러리 페이지를 가지고 있는데, 여기에는 UserRepository가 아닌 갤러리 데이터를보기로 되돌리고 싶습니다. 이것은 내가 매우 혼란스러워하는 곳입니다. – Dave

+0

플러스, GetUserNotes (userid)와 같이 cshtml에서 메서드를 호출하고 싶다면 어떻게해야합니까? 한 번에 모든 것을 데이터 모델에서 반환하는 대신에? 비효율적 인 것 같지만 MVC에서는 허용되지 않습니다. 감사. – Dave

+0

@Dave : MVC의 작동 방식을 이해하는 데 시간을 할애해야 할 것 같습니다. 기본적인 튜토리얼이 가득합니다. –

2

@model _LogOnPartial.Models.UserRepository 아마해야한다 주어진 상황에서 유효하지 않은 유형 ','이있다 ' u는 유형 자체가 아닌 두 번째 매개 변수로 UserRepository 유형의 인스턴스와 인스턴스를 제공해야합니다.

+0

첫 줄은 오타였습니다. 죄송합니다. 알려 주셔서 고마워요. – Dave

관련 문제