带有Ajax局部视图的MVC3 - 如何在创建成功时显示“成功”警报?

时间:2012-04-01 22:37:56

标签: ajax asp.net-mvc-3 alert asp.net-mvc-partialview

我有一个“高级搜索”视图。过滤器配置是ajax局部视图,搜索结果列表是另一个。在过滤器配置局部视图中,我有一个“搜索”按钮和一个“保存搜索过滤器”提交按钮。如果过滤器保存在数据库中,我想显示“保存成功”的警报,否则根本没有警报,因为专用区域中显示任何错误。

这是我到目前为止所做的:

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" />
}

我想要一个函数调用“OnSuccess”而不是“ExecuteSearch”函数,如下所示:

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

但是在这种形式下,即使“验证”区域中显示错误,警报也会显示。如何表达显示警报的条件?

1 个答案:

答案 0 :(得分:0)

如果http响应代码在200或304的范围内,那么它被认为是成功的。并调用onSuccess回调,在你的情况下,它总是发生,因为你的控制器返回一个代码为200的有效页面。你必须查看jQuery(在onSuccess回调中)如果有错误的div(例如,计算它们),如果有没有,这意味着成功。

我不记得他们有什么类,但看起来像这样:

if($("div.ErrorMessage").length > 0) { //or span.field-validation-error
  // success
} else {
  // failure
}