2013-08-22 4 views
0

(고화질)은 다음과 같습니다 AjaxOptions에 도달하지. 그러나 PartialVeiwResult를 반환해야하는 URL.Action "GetDocGroupSearchFields"는 호출되지 않습니다.MVC Ajax.BeginForm 도우미 행동을

같은 외모에서 해당 :

@using (Ajax.BeginForm(ajaxOptionsDocGroupsForm)) 
{ 
    @Html.Action("GetDocumentGroups", new { userId = Model.Id }) 

    <button type="submit">Get Search Fields >></button> 
} 

가 그리고 렌더링 된 HTML은 이것이다 :

<div class="docGroupsWrapper"> 
    <form action="/" data-ajax="true" data-ajax-loading="#loadingSearchFields" data-ajax-loading-duration="5000" data-ajax-mode="replace" data-ajax-update="#divSearchFieldRows" data-ajax-url="/Home/GetDocGroupSearchFields" id="form0" method="post"> 
    <b>Document Groups:</b> 

    <select id="DocGroupItems" name="DocGroupItems"> 
     <option value="">--Select One--</option> 
     <option value="3">AuthLetters</option> 
     <option value="4">SummaryVouchers</option> 
     <option value="5">ExplanationOfBenefits</option> 
    </select> 
    <button type="submit">Get Search Fields >></button> 
    </form> 

    <div id="divSearchFields" class="searchFieldsWrapper"> 

    <div id="loadingSearchFields" class="load" style="display:none"> 
     <p>loading Document Search Fields...</p> 
    </div> 

    <div id="divSearchFieldRows"> 
     <span class="instructions"> 
      Choose a Document Group from above to see columns to search with. >> 
     </span> 
    </div> 
</div> 

그러나 그것은 단지 홈 컨트롤러의 액션 타격되지 않습니다 GetDocGroupSearchFields를, 이것은 지금 당장 보입니다.

public PartialViewResult GetDocGroupSearchFields(int docGroupId) 
    { 
     List<DocumentGroupField> searchFields = new List<DocumentGroupField>(); 

     return PartialView(); 
    } 

그리고 반환 된 부분보기 그냥 이것이다 :

@using VaultSearch.Models 
@model List<DocumentGroupField> 

<b>Search Fields!!!</b> 

그래서, 정말 작업이 유일한 것은 로딩 DIV이다.

저는이 모든 개념을 Adam Freeman의 APRESS 책인 Pro ASP.Net MVC 4, Chapter 21 buildup에서 다루었습니다.

나는 여기에서도 거의 똑같은 일을하고 있습니다. 왜 작동하지 않는지 알 수 없습니다. Adam은 그의 예제에서 어떠한 동사 또는 ChildAction 속성도 지정하지 않으며 모두 작동합니다.

+0

방금 ​​Ajax.BeginFrom 도우미가 렌더링 된 양식에 method = post를 넣었습니다. 그래서 PartialViewResult를 반환하는 작업에 [HttpPost] 특성을 추가했습니다. – Sam

답변

0

컨트롤러 동작에 docGroupId 정수 매개 변수가 필요합니다. 당신의 관점에서 당신은 가치를 제공하지 않습니다. 따라서 FireBug 또는 Chrome 개발자 툴바에서 서버로 전송되는 AJAX 요청을 보면 서버의 응답이 표시됩니다.

필수 매개 변수 docGroupId에는 값이 제공되지 않았습니다. 그래서

당신이 당신의 URL을 생성 할 때이 매개 변수의 값을 제공하거나 당신이 그것을 값을 전달하지 않을 경우 그것을 null 허용 정수을 확인하십시오

Url = Url.Action("GetDocGroupSearchFields", new { docGroupId = "123" }) 

은 또한 당신이로 포함 할 수있다을 양식 안의 숨겨진 필드 :

+0

감사합니다 - 지금 docId 매개 변수를 제거했고 AJAX 도우미를 통해 부분 뷰를 다시 가져 왔습니다. – Sam

+0

좋아, 모든 것이 예상대로 작동합니까? –