1

「詳細検索」ビューがあります。フィルタ構成はajax部分ビューであり、検索結果リストは別のものです。フィルタ構成の部分ビューには、[検索]ボタンと[検索フィルタを保存]送信ボタンがあります。フィルタがDBに保存されている場合は「保存に成功しました」というアラートを表示したいのですが、それ以外の場合は専用領域にエラーが表示されるため、アラートはまったく表示されません。

これは私がこれまでに持っているものです:

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();" />
    &nbsp;&nbsp;&nbsp;
    <input id="SaveButton" type="submit" value="Save your search filter" />
}

「ExecuteSearch」関数の代わりに「OnSuccess」を呼び出す関数が欲しいのですが、次のようになります。

function OnSuccessDoThis() {
    alert("Your filter was successfully saved");
    ExecuteSearch();
};

ただし、このフォームでは、「検証」領域にエラーが表示されている場合でもアラートが表示されます。アラートを表示するための条件を表現するにはどうすればよいですか?

4

1 に答える 1

0

http 応答コードが 200 または 304 の範囲内にある場合、成功と見なされます。そして、onSuccess コールバックが呼び出されます。あなたの場合、コントローラーがコード 200 の有効なページを返すため、常に発生します。エラーのある div がある場合 (たとえば、それらをカウントする場合)、jQuery (onSuccess コールバック内) を調べる必要があります。なし それは成功を意味します。

彼らが持っているクラスを正確に覚えていませんが、次のようになります。

if($("div.ErrorMessage").length > 0) { //or span.field-validation-error
  // success
} else {
  // failure
}
于 2012-04-01T23:16:11.250 に答える