C# 在MVC Ajax.BeginForm中使用某些条件阻止更新html?

C# 在MVC Ajax.BeginForm中使用某些条件阻止更新html?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,ajax.beginform,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Ajax.beginform,我的视图中有以下代码, 它用于在网站中搜索,用户可以多次提交以下表单 @using (Ajax.BeginRouteForm("Search", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "SearchContents", LoadingElementId = "SearchAjaxLoader", OnSuccess = "SearchLoadContent

我的视图中有以下代码,
它用于在网站中搜索,用户可以多次提交以下表单

@using (Ajax.BeginRouteForm("Search", new AjaxOptions
{
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "SearchContents",
    LoadingElementId = "SearchAjaxLoader",
    OnSuccess = "SearchLoadContentsOnSuccess",
    OnFailure = "SearchLoadContentsOnFailure",
    OnBegin = "SearchLoadContentsOnBegin",
    OnComplete = "SearchLoadContentsOnComplete",
}))
{
   @Html.AntiForgeryToken()
   <input type="text" name="Search" />
   <input type="submit" value="Submit" />
}
@使用(Ajax.BeginRouteForm(“搜索”),新的AjaxOptions
{
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“SearchContents”,
LoadingElementId=“SearchAjaxLoader”,
OnSuccess=“SearchLoadContentsOnSuccess”,
OnFailure=“SearchLoadContentsOnFailure”,
OnBegin=“SearchLoadContentsOnBegin”,
OnComplete=“SearchLoadContentsOnComplete”,
}))
{
@Html.AntiForgeryToken()
}
我想拒绝旧的ajax结果,只显示最新的ajax结果。
在非mvc Ajax表单中,我创建了一个数组作为Ajax计数器,并将服务器响应与之进行比较,以防止更新html。

我想知道如何在某些情况下阻止
Ajax.BeginForm
更新Html。

作为一个示例,我将用
OnSuccess
调用演示,您可以对希望处理的每个事件执行此操作

在您的
AjaxOptions
中,删除此选项以防止替换

InsertionMode = InsertionMode.Replace,
UpdateTargetId = "SearchContents",
在您的
SearchLoadContentsOnSuccess
JavaScript方法中,如果看不到我使用的方法,它将是这样的:

function SearchLoadContentsOnSuccess()
{
    // Do something
}
将其更改为:

function SearchLoadContentsOnSuccess(e)
{
    // Do something
}
现在,
e
参数将包含从ajax调用返回的数据

在您更新的方法中,我只需检查响应并按照响应进行操作。 例如,如果响应包含值和结果属性:

function SearchLoadContentsOnSuccess(e)
{
    // Do something 
    $(e.value == 1)
        {
          $('#SearchContents').html(e.results);
        }
}
您只需更改上述方法中的javascript即可满足您的需要