如何使用asp net mvc 4从AjaxOptions中的控制器返回数据

时间:2012-12-14 18:45:21

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

我有这个表格

@using (Ajax.BeginForm("opImportFile", "Operacao", new AjaxOptions { HttpMethod = "POST",
OnSuccess = "LimparCampos('true')", OnFailure = "LimparCampos('false')" }, 
new { id = "formUpdStoringSettings" }))
{ ... }

而不是true或false,我想传递/ Operacao / opImportFile返回的字符串

这可能吗?

3 个答案:

答案 0 :(得分:1)

基于documentation,回调将提供返回的ajax内容,该内容本身具有“get_data()方法以从服务器获取响应”。

在你的定义中,你可能只需要指向回调方法,而不是实际自己调用它(意思是,不包括参数):

OnSuccess = "LimparCampos"

答案 1 :(得分:1)

我倾向于避免使用AjaxForm。我会写正常的表单并让我的javascript来处理单独的表单发布。简单干净。

@using(Html.Beginform("opImportFile","Operaco"))
{
  //some elements here
  <input type="submit" value="Save" id="btnSave" />
}

和一些javascript使我们的表单提交到ajaxified版本

$(function(){
  $("#btnSave").click(function(e){
     var _form=$(this).closest("form");
     e.preventDefault();
     $.post(_form.attr("action"),_form.serialize(),function(response){
         // now response variable has the return item from the action method.
         // and do some fun stuff with that.
         alert(response);

     });
  });
});

您可以从操作方法返回任何内容。字符串,JSON或部分视图。

答案 2 :(得分:0)

尝试设置这样的回调函数:

OnSuccess = "LimparCampos"

并使用以下方式访问数据:

  function LimparCampos(response) {
     var jsonResult = response.get_response().get_object();

  }