2014-11-03 1 views
0

my Ajax.BeginForm이 검색 조건을 컨트롤러에 제출하지 않습니다.Controller (MVC 4)에서 Ajax.BeginForm 검색 메서드가 호출되지 않습니다.

@using (Ajax.BeginForm("Index_AddSearchCriteria", "Home", new AjaxOptions {HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "SearchDiv" })) 
{ 

     // @Html.Label("Search: ") // should I use this instead? 
     // @Html.TextBox("search_criteria") // should I use this instead? 
     <input type="text" name="search_criteria" /> 
     <input type="submit" value="Search" /> 
} 

<div id="SearchDiv"> 

</div> 

을 컨트롤러

public PartialViewResult Index_AddSearchCriteria(string search_criteria) 
    { 
     ViewModel.SearchCriteria = search_criteria; 

     return PartialView("SearchBar", ViewModel); 

    } 

에 내가 검색 버튼을 누를 때조차 명중되지 않습니다 내 Index_AddSearchCriteria에 중단 점을 넣어했습니다 다음과 같이 코드입니다.

jquery와 unobtrusive-ajax가로드되었습니다.

편집 : 이는 오류 내가 얻을 -

POST http://localhost:51989/Home/Index_AddSearchCriteria 404 (Not Found) jquery-1.8.2.js:8430 
send jquery-1.8.2.js:8430 
jQuery.extend.ajax jquery-1.8.2.js:7982 
asyncRequest jquery.unobtrusive-ajax.js:121 
(anonymous function) 
jquery.unobtrusive-ajax.js:171 
jQuery.event.dispatch jquery-1.8.2.js:3077 

elemData.handle.eventHandle

편집 2 : 그래서 코드 작업을 수행합니다,하지만 난 같은 다른 PartialView이 페이지에서 Ajax를 사용하고 100ms마다 폴링하므로 검색 쿼리를 보내는 데 오랜 시간이 걸릴 것으로 보입니다. 나는 그것을 1000ms로 바꿨고 검색은 잘 작동한다.

+0

브라우저의 개발자 도구를 사용하여 (. 당신이 그들 모두를 변경해야하므로 몇 .live 이벤트가 없습니다 바랍니다 또한 당신이 또한 변경하지 않는 한 최소 파일을 참조 그나마) 또는 ajax 요청이 실제로 보내지는지 알아보기 위해 fiddler와 같은 프로그램을 사용하십시오. 그렇다면 응답과 오류가 다시 표시되어야합니다. – heymega

+0

전송 중입니다.하지만 Index_AddSearchCriteria를 찾을 수 없다는 404 오류가 발생합니다. – prunes4u

+0

방금 ​​코드를 실행했는데 정상적으로 실행되었습니다. (나는 ViewModel이 당신이 준 샘플에 정의되지 않았기 때문에 그 코드가 당신을 위해 만들어 졌다고 가정한다. 당신은 당신의 노선으로 놀고 있니? – KevDevMan

답변

1

문제를 재현 할 수있었습니다. 기본적으로 AJAX "Get"(따라서 오류의 POST)을 수행하지 않고 표준 웹 게시를 수행합니다. 나는이 문제를 결국 해결할 수 있었다. jquery.unobtrusive-ajax에는 문제가 있으며 모든 ".live"이벤트가 ".on"이벤트가되도록 코드를 변경해야합니다.

$("a[data-ajax=true]").live("click", function (evt) { 
    evt.preventDefault(); 
    asyncRequest(this, { 
     url: this.href, 
     type: "GET", 
     data: [] 
    }); 
}); 

에 -

$("a[data-ajax=true]").on("click", function (evt) { 
    evt.preventDefault(); 
    asyncRequest(this, { 
     url: this.href, 
     type: "GET", 
     data: [] 
    }); 
}); 
관련 문제