2013-05-22 2 views
0

내 웹 사이트에 두 개의 동일한 AJAX 양식이 있습니다 (유일한 차이점은 포함 된 방식입니다). 하나의 양식은 내 템플릿에 눈에 거슬리는 AJAX를 포함 할 때만 작동합니다. 다른 양식은 눈에 거슬리지 않는 AJAX를 포함하지 않을 때만 작동합니다.AJAX 양식이 눈에 띄지 않을 때만 제출하십시오.

@model ViewModels.Book.FindNewBookViewModel 
@{ 
    AjaxOptions options = new AjaxOptions 
           { 
            HttpMethod = "Get", 
            UpdateTargetId = "book-overview", 
            Url = Url.Action("BooksData", "Book"), 
            LoadingElementId = "loading", 
            LoadingElementDuration = 2000, 
           }; 
} 

@using (Ajax.BeginForm("BooksData", "Book", options, new { @class = "form-search" })) 
{ 
    @Html.AntiForgeryToken() 

    <div class="row-fluid"> 
     @Html.TextBoxFor(x => x.Search, new { autofocus = "autofocus" }) 
     <input type="submit" value="Search" class="btn btn-primary btn-small"/> 
    </div> 

    <div id="loading" class="loading"> 
     <p>Searching...</p> 
    </div> 

    <div id="book-overview" class="row-fluid"> 
     @Html.Action("BooksData", "Book", new { search = Model }) 
    </div> 
} 

을 그리고이 양식에서 호출을 처리해야 컨트롤러 방법 : 나는 양식을로드 할 때

[Authorize] 
public ActionResult BooksData(FindNewBookViewModel viewModel) 
{ 
    if (viewModel.Search == null) 
    { 
     return PartialView(); 
    } 

    var data = _bookService.FetchBooks(viewModel.Search); 

    return data != null ? PartialView(data) : PartialView(); 
} 

, 그것은 행동에 빈 요청을 수행 여기에 작동하지 않는 형태이다 방법. 그러나 뭔가를 채우고 제출 버튼을 클릭하면 요청이 수행되지 않습니다.

작동하는 양식과 작동하지 않는 양식의 유일한 차이점은 작업 양식이 Html.Action()을 통해 다른 페이지에 포함되고 작동하지 않는 양식에는 직접 탐색되는 자체 페이지가 있다는 것입니다.

jquery-2.0.0.min.js 
jquery.unobtrusive-ajax.min.js 
jquery.validate.min.js 
jquery.validate.unobtrusive.min.js 

사람이이 문제를 해결하는 방법을 알고 있나요 :

이 나는 ​​_layout에로드 내 JS libs와는?

+0

그래서 새 jquery 2.0에는 더 이상 완벽한 Ajax가 내장되어 있지 않습니까? – mplungjan

답변

0

내 종속성을 업데이트하면 문제가 해결되었습니다. 이게 내 실수는 아니지만 눈에 잘 띄지 않는 AJAX 라이브러리의 버그 인 것 같아요.

관련 문제