如何通过mvc3中的ajax调用部分视图

时间:2012-05-03 12:15:10

标签: ajax asp.net-mvc-3 asp.net-mvc-ajax

我需要通过ajax调用部分视图。我尝试了以下内容,但我不确定如何完成它。

$("#UserName").change(function () {
        var userid = $("#UserName").val();
        var ProvincialStateID = $("#State").val();
        var Hobbyid = $("#Hobby").val();
        var Districtid = $("#DistrictNames").val();
        var Homeid = $("#Hobbyhome_EstablishmentId").val();
        var urlperson = '@Url.Action("FetchPersonByUserName")';
        $.ajax({
            type: "POST",
            url: urlperson,
            data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid },
            success: function (data) { 
           //Dont know what to write here
        });
    });

这是我在Controller中编写的函数:

 [HttpPost]
    public ActionResult FetchPersonByUserName(int userid,int stateid,int districtid,int homeid,int Hobbyid)
    {
      //Code to fetch the data in the partial using all parameters
      return PartialView("_LearnerAssociationGridPartial", list);
    }

当我点击下拉列表时,会调用ajax,我希望通过ajax调用的函数将其重定向到局部视图。请帮助我,因为目前我无法显示我的部分视图

2 个答案:

答案 0 :(得分:4)

您需要的是

$.ajax({
   type: "POST",
   url: urlperson,
   data: { userid: userid, 
           stateid: ProvincialStateID, 
           hobbyid: Hobbyid, 
           districtid: Districtid, 
           homeid: Homeid },
    success: function (data) { 
          var result = data; 
          $('targetLocation').html(result);
    }
   });

建议不要直接使用变量数据,但可以。 现在,目标位置是您希望显示结果的位置。

请在此处查看更多信息:

http://api.jquery.com/jQuery.ajax/

对于缓慢提取数据,请尝试优化查询

<强>更新 对于nhibernate运行速度慢,请尝试使用nhibernate profiler http://www.hibernatingrhinos.com/products/nhprof作为付费版本,或者尝试使用sql profiler查看查询执行的内容,通常可以获得更多您期望的内容,或者由于查询的复杂性。

答案 1 :(得分:3)

通过重定向到parial视图,我不明白你的意思。通常人们使用ajax和部分视图来获取页面的一部分而不刷新页面(你可能已经在这个网站/ facebook / twitter等中看到过这种行为。)所以我想你可能想要显示你正在获取的数据异步显示在当前页面的一部分中。你可以在你的成功处理程序中做到这一点

$.ajax({
        type: "POST",
        url: urlperson,
        data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid },
        success: function (data) { 
          $("#divUserInfo".html(data);
        }
 });

确保您当前页面中有一个ID为divUserInfo的div。

如果您真的想在ajax发布后重定向,可以这样做。

$.ajax({
        type: "POST",
        url: urlperson,
        data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid },
        success: function (data) { 
          window.location.href="Why-I-need-Ajax-Then.php";
        }
 });

就个人而言,我不使用HttpPost(在客户端和服务器中)如果它是GET某些数据的方法。我简单地使用jquery get或load。

$.get("yourUrl", { userid: userid, stateid: ProvincialStateID } ,function(data){
  $("#divUserInfo".html(data);
});