2009-11-13 3 views
0

데이터를 백엔드 저장소에 저장하는 데 주로 사용되는 컨트롤러 동작이 많습니다. 지금은 대부분 다음과 같은 서명을 사용합니다.FormCollection 매개 변수를 사용하여 ASP.NET MVC, JSON 게시 컨트롤러 동작

// 
    // POST: /WidgetZone/Create 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(FormCollection collection) 

보시다시피 FormCollection을 허용합니다. 클래식 사용자보기에서는 정상적으로 작동합니다. 이제 JSON을 사용하여 이러한 작업을 수행하려고합니다. 그리고는이 같은 JsonPox 액션 필터를 사용하여 수행

// 
    // POST: /WidgetZone/Create 
    [JsonPox] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(FormCollection collection) 

이 작업이 FormCollection을이 작품을 기대하고 언제?

는 예를 들어 문제 (물론 나는이 행동으로 그것을 전달하는 내 자바 스크립트 클라이언트 측에서 JSON 객체를 생성)없이이 작품은 :

// 
    // POST: /WidgetZone/Create 
    [JsonPox] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(string id, string description) 

그것은 모든 비동기로 포스트 백 UI를 변환하는 작업에 관한 것입니다 하나, 그래서 저장 및 업데이 트가 비동기 수행됩니다. 나는 올바른 길을 가고 있는가? 별도의 Json, XML 또는 고전적인 ViewResult 액션을 개발하는 것이 최선의 방법은 아니라고 생각합니다.

은 도움말

답변

1

이 필터는 액션 메소드는 JSON에 순서대로 실행 또는 XML이 반환 된 모델을 직렬화 후 실행하여 OnActionExecuted 방법에 기반을 평가. 액션 메소드의 입력 내용은 중요하지 않습니다. 액션의 실행이 끝나면 필터는 ViewResult에 저장 한 모델을 찾고 요청에서 전달 된 Content-Type 헤더에 따라 직렬화합니다.

+0

의견을 보내시겠습니까? 예를 들어 예외가 없으면 "Create successful"을 반환하고, 문제가 발생하면 "Create failed"를 반환합니다. 컨트롤러 내에서 ViewData [ "Message"] = "Success"로 수행 한 다음 뷰 자체에서 ViewData에 액세스합니다. Json에서이 텍스트를 반환하는 방법은 무엇입니까? 내 모델 클래스에 추가 속성을 추가해야합니까? 예를 들어, 속성 LastActionResult를 WidgetZone 클래스로? 그런 다음 생성 된 객체 Json을 직렬화하고이 속성도 포함됩니다. ?? – mare

+0

예, 필터는 ViewData에있는 것이 아닌 모델의 내용 만 직렬화하기 때문에 모델에 속성을 추가해야합니다. –

관련 문제