2014-04-14 2 views
1

문제가 발생했습니다.jquery로 부분 뷰 렌더링

나는 클라이언트 측 메시지와 그리드 뷰를 처리하기 위해 두 개의 부분 뷰 하나의 뷰를 가지고있다.

gridview는 양식이며 업데이트 항목을 삭제할 수 있습니다. 오류/성공 메시지를 삭제하거나 업데이트 할 때 tempdata에서 생성되지만 그리드 partialview만이 actionresult 함수에서 렌더링됩니다.

데이터가 이미 tempData에 있으므로 아무 것도 게시하거나 컨트롤러로 리디렉션하지 않고 메시지를 부분 뷰로 렌더링하는 방법이 필요합니다.

보기 :

<div id="page-KnownRecipient"> 

    @Html.Partial("ClientSideMessages") 

    @Html.Partial("_TabsPartial") 

    @if(Model != null) 
    { 
     using (Html.BeginForm()) 
     { 
      @Html.Partial("_EditModePartial", Model);//Grid 
     } 
    } 

</div> 

있는 gridview의 모든 콜백 라우팅 그냥 partialview EditModePartial 및 반환 VIEW는 "ClientSideMessages"에 표시되어야 부분은/업데이트 콜백을 삭제 한 후 렌더링되지 않습니다 메시지를 다시로드되지 않습니다 때문이다. 그래서 그에 따라 jquery를 사용하여 "ClientSideMessages"partialview를 렌더링하는 방법이 필요합니다. 새 데이터는 partialview의 실제 렌더링에만 필요합니다.

// ---- 다음과 같이 끝납니다.

보기;

<div id="detailsDiv"> 
     @Html.Partial("ClientSideMessages") 
    </div> 

컨트롤러;

public ActionResult StatusMessages() 
{ 
    return PartialView("ClientSideMessages"); 
} 

JS;

function getStatusMessages() { 
    var sURL = "/Home/StatusMessages"; // Just put the function in some base controller 
    var $detailDiv = $('#detailsDiv'); 

    $.get(sURL, function (data) { 
     $detailDiv.html(data); 
    }); 
} 

감사합니다. 당신은 jQuery를 사용하여

@Html.Partial("ClientSideMessages") 

렌더링하려면

+1

귀하의 질문이 명확하지 않습니다. 이미 렌더링 된 마크 업을 숨기고 표시하고 싶습니까? –

+0

그리드의 업데이트/삭제 기능에서 말하는 "새 데이터"는 없습니다. 따라서 msgs 부분을 실제로 다시 렌더링해야합니다. – SomeRandomName

답변

2

할 수 있습니다 :

<div id="target"> 
    @Html.Partial("ClientSideMessages") 
</div id="target"> 

사용 아약스 :

$.ajax({ 
     url: "/{Controle}/ClientSideMessages", 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     data: {Your data}, 
     error: function (data) { 
      {error message}; 
     }, 
     success: function (data) { 
       $('#target').html(data); // loading partialView into div 
     } 
    }); 
2

당신이에 하나의 액션을 만들어야 이렇게하려면 귀하의 컨트롤러는 클라이언트 메시지 부분보기 만 반환합니다. 일단 그렇게하면 다음을 수행해야합니다.

<div id="page-KnownRecipient"> 

    <div id="clientMessages"> 
    @Html.Partial("ClientSideMessages") 
    </div> 
    @Html.Partial("_TabsPartial") 

    @if(Model != null) 
    { 
     using (Html.BeginForm()) 
     { 
      @Html.Partial("_EditModePartial", Model);//Grid 
     } 
    } 

</div> 

다음 함수를 사용하여 콜백에서 클라이언트 메시지를 렌더링 할 수 있습니다.

<script type="text/javascript> 
$(function(){ 
    var renderClientMessage = function(){ 
    $("#clientMessages").load("ClientMessageAction_URL"); 
}; 
}); 
</script> 
+0

당신은 $ ("clientMessages") – szpic

+0

에있는 selector #에 대해 잊어 버렸습니다. 컨트롤러에서이 함수를 만들었습니다. \t \t 공공 ActionResult의 loadmsg() \t \t { \t \t \t 반환 PartialView ("ClientSideMessages을"); \t \t} 및 js; $ (기능 refreshM() { var에 renderClientMessage = 함수() { \t $ ("#의 clientMessages") 부하 ("설정/loadmsg을");. \t}; }); 그러나 메시지 부분이 렌더링되지 않습니다. – SomeRandomName

+0

콘솔에 오류가 있습니까? – szpic

관련 문제