3

내가 MVC를 시작 해요 나는이 게시물에 대한 모델과 ViewModels, 감사의 차이를 이해 : 녹아웃과 .NET보기 모델의 차이점은 무엇입니까?

http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications

그러나 나는 내 동료에게 이것을 보여이 대안에 있다는 인상을 지금이다 녹아웃을 사용하여 뷰를 모델에 바인딩합니다. 누군가 이것을 설명 할 수 있습니까? 녹아웃 바인딩은 속성이있는 ViewModel 클래스를 정의하는 것과 동일한 작업을 수행합니까?

감사합니다.

+2

녹아웃은 클라이언트 측보기 모델을 사용합니다. MVC는 서버 측 뷰 모델을 사용합니다. – SLaks

+0

그럼 둘 중 하나인가요? 어떤 것을 사용할 지 어떻게 결정합니까? – RobVious

답변

5

에 노출됩니다 -model은 클라이언트 측이고 MVC 뷰 모델은 서버 측과 같습니다.

귀하의 질문 : 사용 방법은 어떻게 결정합니까?

답변 : parallel.That가 below.It이 동작에 대한 unit.This보기 모델 등 두 속성과 기능을 포함로 녹아웃 뷰 - 모델이 가질 수있는 하나의 cshtml 페이지 수단으로 당신은 모두 사용할 수 있습니다 클라이언트 측 기능에 필요한 요소. MVC의 뷰 - model.That와

//This is a simple Viewmodel 
    //JavaScript that defines the data and behavior of your UI 
    function AppViewModel() { 
     var self = this; 
     self.firstName = ko.observable(); 
     self.lastName = ko.observable(); 

     self.fullName = ko.computed(function() { 
      return self.firstName() + " " + self.lastName(); 
     }); 

     self.capitalizeLastName = function() { 
      var currentVal = self.lastName();//Read the current value 
      self.lastName(currentVal.toUpperCase());//Write back a modified value 
     }; 
    } 

그러나 쇼 서버 측 행동에 대한 좀 더 복잡한 (이상의 속성)를 사용할 수는보기에 그 데이터를 데이터베이스에서 데이터를 가져와 보여입니다.

결론 : MVC로 작업 할 때 두보기 모델을 동시에 사용할 수 있습니다.

중요 참고 :하지만 두 시나리오 모두에 대한 단일 뷰 - 모델을 사용해야 할 경우 당신은 당신이 KnockoutJS Mapping plugin를 사용한다는 것을 also.For 그 일을 할 수 있습니다.

다음과 같이 사용할 수 있습니다. 당신은 내가이 당신에게 도움이되기를 바랍니다 learn.knockoutjs

을 확인 넉 아웃에 대한 자세한 내용을 알고 싶다면

<script src="~/Scripts/knockout.mapping-latest.js"></script> 
<script type="text/javascript"> 
     $(function() { 
      var viewModel = ko.mapping.fromJS(@Html.Raw(Model.ToJson())); 
      ko.applyBindings(viewModel); 
      }); 
</script> 

당신은 Loading KnockoutJS View Models from ASP.Net MVC, for faster page loads

에서 이것에 대해 더 자세한 정보를 얻을 수 있습니다.

3

넉 아웃 뷰 모델은 클라이언트 측이고 MVC는 서버 측입니다. 이것이 큰 차이입니다.

녹아웃은 단일 페이지 응용 프로그램을 만들고 클라이언트 측에 논리를 캡슐화합니다.

MVC의 ViewModels은 페이지를 렌더링하고 포스트 백을 처리하기 위해 서버 측에서만 작동합니다. 당신은 서버 측보기 모델이 필요합니다 다음 클라이언트 측을 수행 할 수 없습니다 귀하의 비즈니스 엔티티에보기 관련 로직을 추가해야하는 경우

0

Xharze의 대답은

... 유효하지만. 그렇지 않은 경우 중복됩니다.

고전 MVC에 차이가 여전히 존재, 이러한 서버 측 모델은 서버 측 콘텐츠를 렌더링하는 데 사용되지 않습니다, 그들은 당신이 넉 아웃보기를 사용할 수 있습니다 대회에서 클라이언트 측 KO 엔진을 사용하여 REST

관련 문제