"고급 검색"보기가 있습니다. 필터 구성은 아약스 부분보기이며 검색 결과 목록은 또 다른 부분입니다. 필터 구성 부분보기에서 "검색"버튼과 "검색 필터 저장"버튼이 있습니다. 필터가 DB에 저장 되었다면 "저장 성공"이라는 경고를 표시하고 싶습니다. 그렇지 않으면 오류가 전용 영역에 표시되기 때문에 경고가 표시되지 않습니다.MVC3 with Ajax partial view - 생성이 성공했을 때 "Success"경고를 표시하는 방법?
AdvancedSearch.cshtml
@model MyApp.ViewModels.MyViewModel
@{
ViewBag.Title = "Advanced search";
}
<div id="divUpdateable">
@Html.Partial("_Filters", Model)
</div>
<div id="divList">
@Html.Partial("_SearchResults", Model.ResultsList)
</div>
_Filters.cshtml
@model MyApp.ViewModels.MyViewModel
<script type="text/javascript">
function ExecuteSearch() {
getForm(window.location.pathname + '/ListResults?
'&City=' + $("#txtCity").val() +
'&pCountry_ID=' + $("#ddlCountry").val() +
'&pPriceMin=' + $("#txtPriceMin").val() +
'&pPriceMax=' + $("#txtPriceMax").val() +
, 'divList');
}
</script>
@using (Ajax.BeginForm("AddOrUpdateFilter", null, new AjaxOptions
{
UpdateTargetId = "divUpdateable",
InsertionMode = InsertionMode.Replace,
OnSuccess = "ExecuteSearch",
}, new { id = "idformCreate" }))
{
@Html.ValidationSummary(false, "Some errors occured, please correct and retry.")
<p>@Html.ValidationMessage("_FORM")</p>
<div class="validation-summary-errors">
<span></span>
<ul>
</ul>
</div>
... controls...
<input id="SearchButton" type="button" value="Search" onclick="ExecuteSearch();" />
<input id="SaveButton" type="submit" value="Save your search filter" />
}
내가 대신 "onsuccess는"을 호출하는 기능을 가지고 싶습니다을 :
이
내가 지금까지 무엇을 가지고 "ExecuteSearch"함수의 내용은 다음과 같습니다.function OnSuccessDoThis() {
alert("Your filter was successfully saved");
ExecuteSearch();
};
그러나이 양식에서는 "유효성 검사"영역에 오류가 표시 되더라도 경고가 표시됩니다. 경고를 표시하기위한 조건을 표현하는 방법은 무엇입니까?
이 답변 주셔서 감사합니다! 하지만 나는 당신이 제안한 것을 적용 할 수 있을지 모르겠다. 왜냐하면 내가 말하고있는 오류는 사실 비즈니스 규칙의 실패이다. 즉, 사용자가 로그인하지 않았거나 사용자가 특정 종류를 저장할 수있는 권한이 없다는 것이다. 필터 또는 일부 필터 조합은 허용되지 않습니다 ... – Furnica
jQuery는 HTTP를 말합니다. 비즈니스 규칙과 물건에 대해서는 아무것도 모릅니다. 따라서 서버가 적절한 상태 코드를 반환 한 다음 OnSuccess 및 OnFailure 콜백을 사용하십시오. 또는 0lukasz0 제안, 귀하의 응용 프로그램을 좀 더 RESTful 수없는 경우 일부 오류가 포함 된 부분을 서버가 반환 된 경우 검색하려면 jQuery 일부 HTML 긁기를 할 수 있습니다. –