2013-03-28 2 views
0

두 개의 오버로드 사이의 기본 차이는 View(model)View("viewName", model)입니다. 내 작업 이름이보기 이름과 같으면 어떻게됩니까?보기 (모델) 대보기 ("보기 이름", 모델)

코드를 더 명확하게하기 위해 이들 중 어느 것을 사용 하시겠습니까? 성능 차이가 있습니까?

답변

2

나는 어떤 차이도 없어야한다는 것을 이해합니다. 두 가지 방법은 과부하입니다.

protected internal ViewResult View() { 
     return View(null /* viewName */, null /* masterName */, null /* model */); 
    } 

    protected internal ViewResult View(object model) { 
     return View(null /* viewName */, null /* masterName */, model); 
    } 

    protected internal ViewResult View(string viewName) { 
     return View(viewName, null /* masterName */, null /* model */); 
    } 

    protected internal ViewResult View(string viewName, string masterName) { 
     return View(viewName, masterName, null /* model */); 
    } 

    protected internal ViewResult View(string viewName, object model) { 
     return View(viewName, null /* masterName */, model); 
    } 

    protected internal virtual ViewResult View(string viewName, string masterName, object model) { 
     if (model != null) { 
      ViewData.Model = model; 
     } 

     return new ViewResult { 
      ViewName = viewName, 
      MasterName = masterName, 
      ViewData = ViewData, 
      TempData = TempData 
     }; 
    } 

그리고 viewName가 전달되지 않는 경우 내부적으로, MVC는 ControllerContext을 사용하여 조회 - 여기

는 MVC3 코드베이스의 소스입니다.