0

我有以下 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 
        };
    }

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

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 }
        );
    }

我是新来的。请帮忙!提前致谢!

4

2 回答 2

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();
      });
});
于 2013-05-29T10:41:20.177 回答
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();
              });

}

还要考虑使用承诺。

$.getJSON().then().done();

于 2013-05-29T06:49:15.057 回答