c# - 防止在 MVC Ajax.BeginForm 中使用某些条件更新 html?

标签 c# asp.net asp.net-mvc asp.net-mvc-4 ajax.beginform

我的 View 中有以下代码,
用于在站点中进行搜索,用户可以多次提交以下表单。

@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 结果并仅显示最新的 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 即可满足您的需求。

关于c# - 防止在 MVC Ajax.BeginForm 中使用某些条件更新 html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760311/

相关文章:

asp.net - 部署asp.net,IIS没有导入应用选项

jquery - C# - FormData 是什么对象类型

c# - 将 [BsonExtraElements] 展平为键值对 json 输出

asp.net - Application_error函数间歇性地捕获 "File does not exist"

asp.net 事件目录成员提供者

c# - 在 ASP.NET 中自定义网络日历

javascript - 从服务器端调用 Javascript 代码是一种好习惯吗?

c# - 在没有同步的情况下修改可为空的 DateTimeOffset 字段是否线程安全

c# - 关于在 MVVM 中适当使用 ViewModelLocator 的问题

c# - 是否可以在三元表达式上只放置一个选项?