2013-04-11 2 views
3

Json Partial View를 새로 고침하고 싶습니다. 이 사용하려고 :새로 고침 Json 부분보기

$('#example123').load('@Url.Action("Rejestracja", "Logowanie")'); 

올바른 있지만 작동하지 않습니다. 특히

$.ajax({ 
      url: '@Url.Action("Rejestracja", "Logowanie")', 
      dataType: "json", 
      type: "POST", 
      async: false, 
      error: function() { 
      }, 
      success: function (data) { 
       if (data.Success) { 

        var el1 = $('<div><strong style="color: black" id="example123">' + data.View + '</strong></div>'); 
        $(el1).dialog(
         { 
          modal: true, 
          title: '<div></div>', 
          minWidth: 340, 
          minHeight: 300, 
          buttons: { 
           'Zamknij': function() { 
            $('#example123').load('@Url.Action("Rejestracja", "Logowanie")'); 
            $(this).dialog("destroy"); 


           } 
          } 
         }); 
       } 

      } 
     }); 

JSON 부분보기

[HttpPost] 
     public JsonResult Rejestracja() 
     { 
      bool dataCahnged = true; 
      var model = new Logowanie(); 
      object view = this.RenderPartialViewToString("Rejestracja", model); 
      return Json(new { Success = true, dataCahnged, View = view }); 
     } 

(이 작업에만 처음으로) (단지 처음이 일)

<script type="text/javascript"> 
    $('#bladReje').hide(); 
    $('#bladRejeText').hide(); 
    $('#poprawnieReje').hide(); 
    $('#poprawnieRejeText').hide(); 


    </script> 

<div id="ex"></div> 
<script type="text/javascript"> 
    $('#ex').text('sasasa'); 
    </script> 
+0

여기에 서버 방법 게시 –

+0

무슨 일입니까? example123 div가로드되지 않습니다. IE 또는 Fiddler에서 F12를 사용하여 부분 페이지 요청이 있는지 여부를 확인 했습니까? – Devesh

+0

@Devesh example123은로드가 정확하지만 Json에는 문제가되지 않습니다. –

답변

0

모든 이유 왜 아약스를 "POST"?, 서버에 정보를 보내지 않으므로 이것이 내가 바꿀 첫 번째 것입니다. 이것을 GET으로 변경하십시오.

둘째로, 문자열을 반환하도록 뷰 HTML을 가져 오는 방법을 변경하십시오. 나는이 확장 방법을 사용하고 있는데 그것을 잘 작동합니다 : 여기

public static class JsonHelper 
{ 
    public static string RenderPartialView(this Controller controller, string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = controller.ControllerContext.RouteData.GetRequiredString("action"); 

     controller.ViewData.Model = model; 
     using (var sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName); 
      var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 
} 

을 그리고 것은 그것을 사용하는 방법에 대한 예입니다 :

public ActionResult GetClientList() 
{ 
    List<ClientModel> clientList = ClientRepository.GetClients(); 
    return Json(new JsonMixedResult { Result = "success", ViewHtml = this.RenderPartialView("ClientList", clientList) }, JsonRequestBehavior.AllowGet); 
} 

마지막으로, 반환 JSON 문에 대한 최종 매개 변수를 확인합니다. 그러면 클라이언트 코드가 컨트롤러에서 반환 된 데이터에 액세스 할 수 있습니다. 이 경우 뷰 HTML을 포함하는 Json 객체입니다.

희망이 방금 PartialView을 반환하지 않는 이유가 표시되지 않습니다

0

을하는 데 도움이 ??? 내 말은 당신의 Json 결과가 성공을 나타내는 2 개의 추가 속성을 가진 부분 뷰를 반환하고 데이터가 변경되었다고 생각하지만이 둘은 나에게 무의미 해 보입니다.

[AjaxOnly] 
public PartialViewResult Rejestracja() 
{ 
    var model = new Logowanie(); 
    return PartialView("Rejestracja", model); 
} 

다음 아약스 호출은 다음과 같을 것이다 : 당신은 왜 당신의 행동에 이렇게하지

$.ajax({ 
    url: '@Url.Content("~/Logowanie/Rejestracja")', 
    dataType: "html", 
    type: "GET", 
    error: function() { 
     // Handle errors here...  
    }, 
    success: function (html) { 
     $("#someDivOnYourPage").html(html); 
    } 
}); 

전체 부분보기가의 사업부에 배치됩니다 이런 식으로 당신의 페이지의 선택 ...

관련 문제