2
내가 ASP.NET MVC와 함께 넉 아웃을 사용하고

여기 MVC 컨트롤러에 의해 채워집니다 내보기입니다녹아웃 뷰 모델 JS

HTML

<html> 
<input type="text" data-bind="value:Name" /> 
<script src="/Scripts/ViewModel.js"></script> 
</html> 

컨트롤러

public actionresult xyz(){ 
    var myModel = new FiestModel(); 
    myModel.Name = "James"; 
    return view(myModel); 
} 

ViewModel.Js

function mymode(){ 
    var self = this ; 
    self.Name = ko.observable('@Model.Name'); 
} 

내 페이지 렌더링시 지정된 값이 James 인 모든 작업을 마친 후.

업데이트

나는 지금 내가 xyz보기에서 사용자 이름을 표시하려면 다시 내 xyz 액션 메소드에 signup with facebook 버튼과 페이스 북의 반환 사용자에 내 응용 프로그램에서, 당신에게 사용자가 클릭을 전체 시나리오에 대해 사람들에게 . 그렇다면 @Anders가 Web APi에서이 작업을 수행한다고 말했기 때문에 어떻게 api를 사용하여이 작업을 수행 할 수 있습니까?

미리 감사드립니다.

답변

3

서버 측 MVC와 클라이언트 측 MVVM을 혼합해서는 안됩니다. 모델 채우기를 WebAPI 컨트롤러 메서드로 이동합니다.

로드 또한 ViewModels에 서버 데이터를 매핑하는 ko.mapping을 사용할 수 있습니다 아약스 에 대한 jQuery.getJSON 또는 다른 프레임 워크를 사용하여 데이터

편집 : ViewModel.js의 코드는 cshtml 파일을 이동해야 oyu가 @ Mode.Name @ Mode.Name을 사용하고 싶다면 그렇게하지 말아주세요.

ViewModel = function(data) { 
    ko.mapping.fromJS(data, {}, this); 
}; 

$.getJSON("api/myController/xyz", null, function(data) { 
    ko.applyBindings(new ViewModel(data)); 
}); 
+0

내 업데이트를보고, 내 전체 시나리오를 설명합니다. 이제는 더 나은 방법으로 나를 도울 수 있기를 바랍니다. 덕분에 – Ancient

+0

그것은 광범위한 질문이었습니다. D 여전히 표준 컨트롤을 사용할 수 있지만 데이터를 얻기 위해 면도기 엔진을 사용하지 않고 Ajax를 사용하여 데이터를 가져옵니다. – Anders

+0

편집 부탁합니다 – Anders

0

같은 플러그인 라인 매핑으로

[HttpGet] 
public FiestModel xyz() { 
    return new FiestModel("James"); 
} 

함께

업데이트 뭔가 JS에서처럼 뭔가 시도 :

function myModel(){ 
    var data = @(Html.Raw(Json.Encode(Model))); 
    this.Name = ko.observable(data.Name); 
} 

그런 다음 당신은 당신의보기를 결합 모델 :

ko.applyBindings(new myModel()); 
+1

인라인/조잡하지 않은 JS는 안티 패턴입니다 – Anders