2012-11-01 4 views
1

은의 우리가 다음 구문 표준 아약스 양식 있다고 가정 해 봅시다 :JSON 액션 메서드에서 Ajax 폼으로 오류나 알림을 반환하는 방법은 무엇입니까?

@using(Ajax.BeginForm("AddCityJson", "City",new AjaxOptions 
     { 
      HttpMethod = "post", 
      OnSuccess = "JScriptOnSuccess();", 
      OnFailure = "JScriptOnFailure" 
     })) 
    { 
    ...form fields go here... 
    } 

, 도시에 대한 몇 가지 정보를 수집하여 제출하고 저장합니다 간단한 형태.

컨트롤러 쪽에서 정보를받습니다. 모든 것이 잘 되었다면 우리는 onsuccess는 AjaxOption 트리거하기 위해서는 true를 반환하고 그렇지 않으면 false를 반환됩니다

public JsonResult AddCityJson(Formcollection collection) 
{ 
var city = new City 
{ 
    ...populate city fields from passed in collection 
} 
var cityRepository = new CityRepository; 
city = cityRepository.SaveOrEdit(city); 

if(city==null) 
{return Json(false)} 

return Json(true); 

} 

을 다양한 검사를 추가하는 내가 필요한 컨트롤러 AddCityJson 방법의 내부. 도시 이름이 이미 존재하는지 또는 다른 유효성 검사가 있는지 확인하고 오류 또는 경고가 누적되면 다시 UI로 반환합니다.

내 Ajax 양식에서 아약스가 참 또는 거짓인지, 그리고 해당 게시물이 성공적인지 여부를 알기 위해 어떻게 UI에 오류/경고 메시지를 전달할 수 있습니까?

ViewData, ViewBags를 사용하지 않는 것이 좋습니다. 감사합니다.

return Json(new { success = false, message = errorMessage }); 

을 그리고 클라이언트 측에서이를 해석 :

답변

1

당신은 예를 들어, JSON 결과에서 값의 수를 반환 할 수 있습니다. ViewData, ViewBags 등을 사용할 필요가 없습니다. 클라이언트 측에서 결과를 포맷하기 만하면 JSON을 통해 데이터를 전송합니다.

EDIT : Ajax.BeginForm()을 사용하고 있다는 것을 알지 못했습니다. 결과를 파싱하려면 여전히 JSON 결과 클라이언트 측에 연결해야합니다. How to use Ajax.BeginForm MVC helper with JSON result?을 참조하십시오.

대부분의 사람들은 Darin의 응답 인 Using Ajax.BeginForm with ASP.NET MVC 3 Razor과 같은 다양한 StackOverflow 게시물에 설명 된 것과 같이 동일한 것을 수행하기 위해 대부분의 사람들이 jQuery를 사용한다고 생각 하겠지만. jQuery 라이브러리가 매우 견고하고 플랫폼 간 테스트를 거쳤기 때문에 어느 것이 좋습니다.

+0

Ajax는 기본적으로 "success"속성을 찾으십니까? – Shenaniganz

+0

JSON 응답을받는 JavaScript 코드 내에서 클라이언트 측의 success 속성 값을 찾을 것이다. –

관련 문제