2010-05-24 2 views
0

그래서 우리는이처럼 조금 보이는 컨트롤러에서 작업을 있다고 가정 할 수 있습니다 : 나는 알아 내기 위해 노력하고 무엇데이터 (asp.net MVC)의 종류에 따라 다른보기를 렌더링

public ViewResult SomeAction(int id) 
{ 
    var data = _someService.GetData(id); 
    ... 
    //create new view model based on the data here 
    return View(viewModel); 
} 

데이터 유형에 따라 다른보기를 렌더링하는 가장 좋은 방법입니다. "_someService.GetData 메서드는 out 유형을 알고있는 데이터를 반환합니다 (즉, typeof (data)를 수행 할 수있을뿐만 아니라 data.DataType을 수행 할 수 있고 열거 형 값 을 얻을 수 있으므로 내가 시도하는 것을 얻을 수 있습니다. 이

public ViewResult SomeAction(int id) 
{ 
    var data = _someService.GetData(id); 

    //mapping fields to the viewModel here 
    var viewModel = GetViewModel(data); 

    swtich(data.DataType) 
    case DataType.TypeOne: return View("TypeOne", viewModel); break; 
    ... 


} 

같이 좀 일을해야하지만 이것은 가장 좋은 방법이 될 것 같지 않습니다 내가 어떤 종류를 사용해야합니까? 갈 방법이 있나요 (나는 그것이 작동 할 경우 이벤트가 잘 모릅니다) RenderPartial Aproach? 결국 뷰에서 변경되는 것은 데이터의 순서입니다 (즉, 뷰의 나머지 부분은 매우 비슷합니다). 건배

답변

3

시험해보기 :

public ViewResult SomeAction(int id) 
{ 
    var data = _someService.GetData(id); 
    var viewModel = GetViewModel(data); 
    return View(data.GetType().Name, viewModel); 
} 

그런 다음보기에 적절하게 이름을 지정하십시오.

+0

GetViewModel (data)이 작동하지 않는 동적 인 경우 뷰를 만든 다음이 뷰어를 할당해야합니다 (그렇지 않으면 가장 좋은 오버로드는 View (string, string)입니다). – roundcrisis

관련 문제