1

제목이 약간 오도 된 경우 사과드립니다.이 작업을 수행하는 방법에 대해 확신하지 못합니다.MVC 비동기 포스트 백 & RenderPartial

여기에 시나리오가 있습니다. Sitefinity 5.1 웹 사이트에있는 피드백 MVC 위젯을 개발 중입니다. 이 위젯은 사실 사용자가 jquery를 사용하여 feedbackLaunch 레이블을 가리키면 표시되는 div입니다.

보기/위젯

@using (Html.BeginFormSitefinity()) 
{ 
    <label for="feedbackLaunch"> 
     <span class="FeedbackHighlight feedbackLaunch">Feedback</span> 
    </label> 

    <div class="feedback"> 
    </div> 

    <div class="FeedbackContent" style="display: none"> 
     <h1>Feedback</h1> 
     <h2>I thought this page was: 
      <br /> 
      <br /> 
      @Html.DropDownListFor(x => x.PageRatingId, new SelectList(Model.Rating, "PageRatingId", "PageRatingName")) 
      <br /><br /> 
      Please give further detail: 
      <br /><br /> 
      @Html.TextAreaFor(model => model.PageDetails, new { @style = "height: 100px;" }) 
       <br /><br /> 
     <input type="submit" value="Submit" /> 

     </h2> 
    </div> 

} 

그래서 나는이 피드백을 백그라운드에서 렌더링 된 페이지는 이제 팝업 DIV있다. 아름다운.

그러나 지금 내가 원하는 것은 제출 클릭을하지만 포스트 백을 수행하지 않고 피드백 div가 사라지기 때문입니다. 제출시, 필자는 본질적으로 새로운 div 또는 view를 표시 할 것이고, 정보가 보내 졌음을 알리면 (webservice로 시작됩니다).

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

제출 양식과 '감사'섹션의 두 부분보기가 있어야합니까?

나는 Sitefinity에 대해 언급했는데, CMS에 새로운 기능이 추가 된 점과 관련하여 언급했다.

감사하게받은 모든 포인터.

+0

JQuery가 있습니까? – Liam

+0

다음은 비슷한 질문을하는 사람들입니다. http://stackoverflow.com/questions/5410055/using-ajax-beginform-with-asp-net-mvc-3-razor – Liam

+0

예 Jquery는 첫 번째 간단한 모양에 대한 옵션입니다. 리암이 유망 해 보인다. –

답변

0

jQuery와 함께 AJAX를 사용할 수 있습니다. 예를 들어, 양식에 ID를 부여한 다음보기에서 위젯을 표시하면 AJAXify하십시오.

$('#feedbackForm').submit(function() { 
    $.ajax({ 
     url: this.action, 
     type: this.method, 
     data: $(this).serialize(), 
     success: function(result) { 
      alert('thanks for submitting your feedback'); 
      // TODO: hide the div containing the feedback form 
     } 
    }); 
    return false; 
}); 
0

"감사합니다"에 동적으로 생성 된 콘텐츠가없는 경우 일부 컨트롤러 작업에 대한 AJAX 호출을 실행하고 200 응답을 얻으면 div를 새로운 것으로 교체하십시오. 모두 감사합니다. jquery를 사용합니다.

서버에 감사의 표시를 동적으로 생성해야하는 경우 감사 메시지와 함께 부분을 반환하는 작업에 대한 ajax 호출을 실행하고 다시 jquery를 사용하여 원래 div를 응답.

관련 문제