2012-09-11 3 views
0

I가 다음과 같은 클래스 :디스플레이 템플릿 -보기가 발견되지 않는

public class Widget 
{ 
    public string Name { get; set; } 
} 

GenericModel

public class GenericModel<T> 
{ 
    public List<T> Data { get; set; } 
} 

내 컨트롤러 액션은 다음과 같습니다

public ActionResult Simple() 
    { 
     var model = new GenericModel<Widget>() 
         { 
          Data = new List<Widget> 
             { 
              new Widget {Name = "a"} 
             } 
         }; 
     return View(model); 
    } 

그리고 내보기는 다음과 같습니다

@model MyApp.GenericModel<MyApp.Widget> 

@{ 
    ViewBag.Title = "Simple"; 
} 

<h2>Simple</h2> 
@Html.DisplayFor(m=>m) 
이보기를 찾을 수없는

@model MyApp.GenericModel<MyApp.Widget> 

<ul> 
@for (int i = 0; i < Model.Data.Count; i++) 
{ 
    <li> 
    @Html.EditorFor(m=> Model.Data[i].Name) 
    </li> 
} 
</ul> 

: 6,

나는/공유/DisplayTemplate 폴더보기에 GenericModel.cshtml라는 파일이 있습니다. 내 모델의 유형 이름을 출력 할 때 "GenericModel 1". Seeing that, I renamed my template "GenericModel 1.cshtml"을 볼 수 있습니다. 이것은 약간의 해킹처럼 보이는데, 이것에 의지하지 않고이 디스플레이 템플릿을 찾는 더 쉬운 방법이 있습니까?

+0

로보기, 당신의 컨트롤러 액션과 동일한 이름이 있어야합니다. – user1477388

+0

@ user1477388 내 관점은 - 내가 말하는 DisplayTemplate입니다. –

+0

UIHint 속성으로 재생 해 보았습니까? 템플릿을 가리키는 UIHint로 Data 속성을 꾸미면 어떻게됩니까? –

답변

0

당신은 당신의 viewstart에서 설정해야합니다 :

@Code 
    Layout = "~/Views/Shared/DisplayTemplate.cshtml" 
End Code 

참고 : 위의 VB이다.

또한 같은 컨트롤러를 통해 전달할 수 : 별도로 지정하지 않는 한

public ActionResult Simple() 
{ 
    var model = new GenericModel<Widget>() 
        { 
         Data = new List<Widget> 
            { 
             new Widget {Name = "a"} 
            } 
        }; 
    return View("", "DisplayTemplate", model); 
} 
+0

감사하지만이 답변은 뭔가 다른 것을 설명합니다. 레이아웃은 기본적으로 마스터 페이지입니다. 문제가 조치에 대한 다른보기를 반환하지 않는 경우 문제는 DisplayFor()를 사용하고 있습니다. 이것이 중요한 이유는 DisplayFor 또는 EditorFor()가 서버에 다시 게시 할 때 내 모델을 데이터 바인딩하기위한 적절한 인덱스를 렌더링한다는 것입니다. –

+1

죄송합니다. 문제를 이해하지 못했을 것 같습니다. 액션이 올바른 뷰를 표시하지 않는다면 여기에'View ("myView", "MyLayout", "MyModel")를 지정하고 뷰에 올바른 모델이 표시되지 않으면'@model MyApp.ModelType ' – user1477388

+0

노력에 감사드립니다. 1) 모델 바인딩 및 컬렉션을 처리 할 때 인덱스가 뷰에서 "존중"되는 방식과 2) 제네릭과 DisplayTemplates가 서로 관련되는 방식 . –

관련 문제