Ajax帖子在mvc razor中不起作用

时间:2014-11-14 10:58:34

标签: jquery ajax asp.net-mvc-4 razor

我有一个包含两个局部视图的视图。在我的控制器中,我有一个针对各种http post方法的通用操作方法,这里是示例代码:

 public ActionResult MyCommonMethode(modelclass object)
    {
 var BALObject = new BusinessLogic();
 -----------
 -----------
 return View("View", object);
    }

 [HttpPost, ActionName("MyCommonMethode"), Button(ButtonName = "searchbutton")]
    public ActionResult search(string searchstring)
    {
        ---------
         -------------
        return()
    }

 [HttpPost, ActionName("MyCommonMethode"), Button(ButtonName = "Save")]
    public ActionResult Edit(modelclass Object)
    {
        try
        {   -------------
             -----------
           -----------------
           return View("view", object);
        }
        catch (Exception e)
        {
             ----------------
            return RedirectToAction("error");
        }
    }

请注意,常用方法没有任何视图,并且它不是http get方法。

现在如果我想使用ajax调用/ post而不是表单提交,如图所示

  $("#button").click(function () {

    //Set inserted values
    var name = $("#textvalue").val();

    // Call Create action method
    $.post('/myController/search', {
        "searchstring": name,
    },
        function () {
            alert("data is posted successfully");
            window.location.reload(true);

        });
});  

所以不是加载整个页面我只是想刷新我的局部视图。 我需要注意的是什么?请帮助。

2 个答案:

答案 0 :(得分:0)

只需替换它:

function () {
        alert("data is posted successfully");
        window.location.reload(true);
    });

使用:

function (data) {
       alert("data is posted successfully");
       $("#result").html(data);
    });

#result是部分视图的容器。

答案 1 :(得分:0)

您已使用“搜索操作”方法中的属性将操作名称更改为MyCommonMethode。 所以你必须像我在下面的代码中提到的那样提到UlR为/ myController / MyCommonMethode。

请更改代码中的网址

$("#button").click(function () {

//Set inserted values
var name = $("#textvalue").val();

// Call Create action method
$.post('/myController/MyCommonMethode', {
    "searchstring": name,
},
    function () {
        alert("data is posted successfully");
        window.location.reload(true); **or**  $("#result").html(data);

    });
});