Ajax.BeginForm OnSuccess没有触发

Thu*_*Dev 9 c# asp.net-mvc ajax.beginform

我正在使用这个局部视图

@model CreateConfigEntityModel

<div class="row">
@using (Ajax.BeginForm("AddElement", "MerchantSites", new { merchantId = @Model.MerchantId }, new AjaxOptions
{
  HttpMethod = "POST",
  OnSuccess = "alert('ok')"
},
new { id = "addConfigForm" }
))
{
  @Html.LabelFor(m => m.EntityName)
  @Html.TextBoxFor(m => m.EntityName)
  @Html.ValidationMessageFor(m => m.EntityName)

  @Html.LabelFor(m => m.DefaultValue)
  @Html.TextBoxFor(m => m.DefaultValue)
  @Html.ValidationMessageFor(m => m.DefaultValue)

  <input type="submit" value="Ajouter" class="tiny button" /> 
}
</div>
Run Code Online (Sandbox Code Playgroud)

调节器

public JsonResult AddElement(CreateConfigEntityModel model)
{
    if (ModelState.IsValid)
    {
        _merchantSitesManager.AddEntity(model.EntityName, model.DefaultValue);
        return Json(new { code = 1 }, JsonRequestBehavior.AllowGet);
    }
    else
        return Json(new { code = 0 }, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

这是在提交表单后显示的内容(项目正确添加)

在此输入图像描述

不知道我做错了什么.

使用jQuery JavaScript Library v2.1.1

我在我的web.config中

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)

我这样称呼我的部分观点

@{ Html.RenderPartial("_CreateConfigEntity", new CreateConfigEntityModel(Model.MerchantId)); }
Run Code Online (Sandbox Code Playgroud)

And*_*ker 23

假设您有一个全新的项目,您需要执行以下操作才能使其正常运行.在ASP.NET MVC模板并不能支持不显眼的AJAX开箱:

  1. 将Nuget中的"Microsoft.jQuery.Unobtrusive.Ajax"包添加到您的项目中.您可以通过右键单击项目并选择"Manage Nuget Packages"来完成此操作.
  2. 将"jquery.unobtrusive-ajax.js"添加到您的页面.如果你在System.Web.Optimization中使用"捆绑"功能,一种简单的方法是将它添加到jQuery包中:

    bundles.Add(new ScriptBundle("~/bundles/jquery")
        .Include("~/Scripts/jquery-{version}.js")
        .Include("~/Scripts/jquery.unobtrusive-ajax.js"));
    
    Run Code Online (Sandbox Code Playgroud)

    您还可以添加<script>指向脚本的标记.

假设页面正在加载jQuery jquery.unobtrusive-ajax.js,那么您发布的代码应该可以正常工作.

  • 该死的.我总是忘记这个nuget.package.我相信它应该默认添加到MVC模板中!无论如何,他们应该在stackoverflow上放一个爱按钮...... <3 (3认同)
  • 不好的是,我没有包含`jquery.unobtrusive-ajax.js`。抱歉 (2认同)