2012-09-06 8 views
0

엔터티 foo을 사용하는 대화 상자가 있습니다.
나는 내가 다음과 같이이 대화 상자에서 값을 저장 한 후 : 내가 확인하는 (메타 데이터)를 사용하려고하면
ModelState 및 대화 상자

$('#SaveEditPQ').submit(); //jquery submit 
    $("#NewQuickDlg.results").remove(); // clear the fields within the dialog Box 
    $("#AddQuickDlg").dialog("close"); // close the dialog box. 


지금 ... 문제가 온다. ModelState.IsValid이 거짓이면 대화 상자를 열어 놓고 싶습니다.

$('#SaveEditPQ').submit(); 
    if ('@Model.IsValidVariable'==true) 
    { 
    $("#NewQuickDlg.results").remove(); 
    $("#AddQuickDlg").dialog("close"); 
    } 

이이 작업을 수행하는 가장 좋은 방법입니다 :

이것은 ModelState.IsValid의 값을 얻을 내 jQuery를 변경하는 값으로 내 foo 엔티티를 확장하여 비 우아하게 해결 될 수있다?

답변

1

나는 같은 문제로 어려움을 겪고 있었지만 다른 방법으로 해결했습니다. 내 모델을 대화 상자를 닫을 숨겨진 변수로 오염시키고 싶지 않았기 때문에 내가 한 일은 공유 _close partialview로 리디렉션했습니다. 그런 다음 내 게시물 이후에 닫기 div가 있는지 확인하고 대화 상자를 닫습니다. 그래서 내 쿼리는 다음과 같습니다.

$(document).on('click', "#SaveButton", function() { 
    $.ajax({ 
     url: "/controller/Edit", 
     type: "POST", 
     data: $("form").serialize(), 
     error: function (data) { 
      var errorMessage = $.parseJSON(data.responseText); 
     }, 
     success: function (data) { 
      if (data) { 
       if ($(data).attr('id') == 'close') { 
        $("#myDialog").dialog('close'); 
       } 
       $("#myDialog").html(data); 
       $("form :input:visible:enabled:first").focus(); 
      } 
      else { 
       $("#myDialog").html('no data'); 
      } 
      return false; 
     } 
    }); 

이제 대화 상자에 서버 측 유효성 검사가 표시됩니다.

여기

[HttpPost] 
    public ActionResult SaveEdit(SomeType viewModel) 
    { 
     if (!ModelState.IsValid) 
     { 
      PopulateDropDowns(viewModel); 

      return PartialView(viewModel); 
     } 

     var someObject= _objectRepository.Get(viewModel.Id); 

     //make some changes to someObject 

     _objectRepository.Save(someObject); 

     return PartialView("_close"); 
    } 

는 그래서는 대답에 대한 PRG 패턴

+0

감사를 다음 컨트롤러 방법을합니다. 지금 새로운 이슈로 옮겼습니다 ... 시도해보고 결과로 여러분에게 돌아 가세요 :) –