「詳細検索」ビューがあります。フィルタ設定はAjaxの部分表示で、検索結果リストは別のものです。私は "検索"ボタンと "あなたの検索フィルターを保存する"送信ボタンがあります。フィルタが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スクレイピングを行い、サーバーがエラーを含む部分を返したかどうかを検出できます。 –