0

무엇이 더 빠를까 궁금합니다. 나는 DB에서 쿼리 한 정보를 ViewBag에 저장 한 다음 뷰에 액세스하여 표시해야하며 그렇지 않으면 View에서 직접 쿼리를 만들어야합니다. 컨트롤러는 MVC의 중간 계층이므로 논리적으로 보일 것입니다. 컨트롤러에서 DB에 액세스하는 것이 더 빨라야합니다.MVC ViewBag :보기에서 직접 액세스보다 Controller에서 ViewBag가있는 DB에 액세스하는 것이 더 빠릅니다.

예 : 컨트롤러

1) 내가 DB 액세스 나 뷰에 표시 할 수 있도록 ViewBag에 정보를 넣어.

컨트롤러 : 난 ViewBag에 유일한 DB에서 일반 데이터를 배치 컨트롤러

<p>POSTER: @ViewBag.dict_poster;</p> 

2) 및보기 대한 액세스 그것 :

EVENT e = db.EVENT.Find(id); 
ViewBag.event = e; 

if (e.poster_id != null) 
{ 
    poster = e.DATA.path; 
} 
ViewBag.dict_poster = poster; 

보기.

컨트롤러 :

EVENT e = db.EVENT.Find(id); 
ViewBag.event = e; 

보기 :

가 더 사용하는 것이 더 적절한 무엇
<p> 
    @if(ViewBag.event.poster_id != null) 
    { 
     @ViewBag.event.DATA.path; 
    } 
</p> 
  • ? 무엇이 더 빠릅니까?
  • 내가 매우 분지 된 DB를 가지고 있고 "ViewBag.e"에 모든 것을 저장해야한다면, ViewBags에 개별 값을 저장하는 것이 더 빠르며 뷰에서 액세스하거나보기에서 직접 액세스하는 것이 더 빠릅니까?
  • 목록은 어떻게됩니까? (목록으로 DB 정보를 저장하는 ViewBag에 넣어하고보기에 액세스하는 것보다)

나는 당신의 답변에 추가 설명에 감사드립니다 .... 당신은

답변

2

에 접근해서는 안된다 보기에서 직접 데이터 레이어를 만들려면 컨트롤러에서이 작업을 수행해야합니다. 또한 ViewBag를 사용하는 대신 강력한 형식의 뷰 모델을보기로 전달하는 것을 고려하십시오.

MVC에서보기 모델을 사용하는 이유 때문에 http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/을 참조하십시오.

+0

감사합니다. 강력하게 형식화 된 뷰 모델은 속도에 영향을 미치지 않습니까? 아니면 "intelisense"지원 및 개요만으로 더 낫습니까? – Dominik

+0

눈에 띄는 차이는 없습니다. ViewData/ViewBag 사용 문제는 유지 보수를 방해하는 '마법 문자열'문제입니다. 자세한 내용은 링크를 참조하십시오. – devdigital

+0

다시 한번 감사드립니다. D – Dominik