通过ajax调用将参数传递给web api

时间:2013-05-29 06:34:24

标签: json jquery asp.net-mvc-4 asp.net-web-api

我有一个ajax查询,它从控制器

返回json
$(document).ready(function () {
    $.getJSON(
      "api/OutletPOC/GetHomeTab?bizId=1",
      function (data) {
          $("#homeTabDesc").append(data.HomeDesc);
          $(".test").hide();
          $("#hometabcontent").show();
      });
});

控制器动作如下

[System.Web.Http.ActionName("GetHomeTab")]
    public HomeTabModel GetHomeTab(int bizId)
    {
        var outlet = db.Info.Where(t => t.BizId == bizId).SingleOrDefault();
        return new HomeTabModel 
        { 
            HomeDesc = outlet.BizHomeDesc, 
            HomeTabText = outlet.BizHomeTabText 
        };
    }

现在我的问题是:我正在向web api发送bizId的硬编码值。我想动态发送这个值。我怎样才能实现这一目标?我在路由配置文件中有这个值。代码如下 -

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{bizId}",
            defaults: new { controller = "Home", action = "Index", bizId = 1 }
        );
    }

我是新手。请帮忙!提前谢谢!

2 个答案:

答案 0 :(得分:1)

不,实际上经过多次研究后,我想出了这个解决方案,这对我来说很好....

在控制器中,

public ActionResult Index(int bizId)
    {
        ViewBag.BizId = bizId;
        return View();
    }

并在视图中,

$(document).ready(function () {
    $.getJSON(
      "api/OutletPOC/GetHomeTab?bizId=@ViewBag.BizId",
      function (data) {
          $("#homeTabDesc").append(data.HomeDesc);
          $(".test").hide();
          $("#hometabcontent").show();
      });
});

答案 1 :(得分:0)

您可以将数据对象作为GetJson调用的一部分传递。

$(document).ready(function () {
    $.getJSON(
      "api/OutletPOC/GetHomeTab",{bizId : 1},
      function (data) {
          $("#homeTabDesc").append(data.HomeDesc);
          $(".test").hide();
          $("#hometabcontent").show();
      });
});

更进一步,你可以将它包装在一个函数中。

function makeCall(id)
{

     $.getJSON("api/OutletPOC/GetHomeTab",{bizId : id},
              function (data) {
                  $("#homeTabDesc").append(data.HomeDesc);
                  $(".test").hide();
                  $("#hometabcontent").show();
              });

}

还要考虑使用promises。

$的getJSON(),然后()()完成;。