c# - Ajax.BeginForm 未在 MVC 中使用 jQuery UI 对话框捕获 OnSuccess?

标签 c# ajax asp.net-mvc jquery-ui jquery-ui-dialog

我正在使用 Jquery UI 对话框加载部分 View 。在部分 View 后提交中,我想在 updateSuccess 函数中捕获结果。但函数从未被调用,结果显示在页面上。

父页面

    <script type="text/javascript">

            function display_dialog() {

               $('#my-dialog').dialog({
                    resizable: false,
                    modal: true,
                    show: "blind",
                    hide: "blind",
                    open: function (event, ui) {
                        $(this).load("/ContactSubmission/Index" );
                    }
                });

     function updateSuccess(data) {
                if (data.Success == true) {
                    alert("Inside Update");
                    //now we can close the dialog
                  $('#my-dialog').dialog( "close" );
                    //twitter type notification
                    $('#commonMessage').html("Update Complete");
                    $('#commonMessage').delay(400).slideDown(400).delay(3000).slideUp(400);
                } else {
                    $("#update-message").html(data.ErrorMessage);
                    $("#update-message").show();
                }
            }
  </script>

Controller

public ActionResult Index()
{
  var contact = new Contact
  {
        Countries = Context.GetCountries()
   };           
    return PartialView(contact);
}
[HttpPost]
public JsonResult Index(Contact contact)
{
   if (ModelState.IsValid)
   {
     if (contact != null)
     {
         //Some business logic is here
         var result = new { Success = "True", Message = "No Error" };
         return Json(result, JsonRequestBehavior.DenyGet);
     }
     else{
         var result = new { Success = "False", Message = "Contact is Null" };
         return Json(result, JsonRequestBehavior.DenyGet);
     }
   }
   else
   {
      var result = new { Success = "False", Message = "Invalid state" };
      return Json(result, JsonRequestBehavior.DenyGet);
    }
  }

部分 View

@using (Ajax.BeginForm("Index", "ContactSubmission", new AjaxOptions{ 
           InsertionMode = InsertionMode.Replace, HttpMethod = "POST",
           OnSuccess = "updateSuccess" },new { enctype = "multipart/form-data",
           @class = "form-horizontal", role = "form" }))
  {
      // Html code is here
       <div class="form-group">
          <div class="col-sm-4 col-md-offset-5">
            <button type="submit" class="btn btn-primary">Submit</button>
            <button type="button" class="btn btn-default" id="cancel">Cancel
            </button>
          </div>
       </div>           
    }

提交后在浏览器上显示如下

enter image description here

如何处理该问题以及如何在提交结果后调用函数?

最佳答案

您需要引用jquery Unobtrusive,否则 View 将会改变。

http://www.nuget.org/packages/jQuery.Ajax.Unobtrusive/

这让我以前很困惑,因此我发现用 jQuery 编写自己的 ajax 调用要容易得多,所以我不需要这个引用。

祝你好运

关于c# - Ajax.BeginForm 未在 MVC 中使用 jQuery UI 对话框捕获 OnSuccess?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616260/

相关文章:

jquery - 将大型 JSON 对象传递到新窗口中的另一个页面。

c# - 使用 Assembly.LoadFrom() 加载后卸载 DLL

c# - 从图像中提取字符

c# - 删除文本框上的默认鼠标悬停/焦点效果

javascript - MVC 列表框如何使用 jQuery 来选择所有,删除所有

asp.net-mvc - ValidationAttribute.ErrorMessage 中的替换参数

asp.net - 如何将 IConfigurationRoot 或 IConfigurationSection 转换为 JObject/JSON

c# - 如何使用类库中的 Controller ?

jquery - Ajax 请求不适用于 iPad 1 (iOS 5.1.1)

javascript - 使用 Jquery Ajax PHP 提交表单