我有一个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 }
);
}
我是新手。请帮忙!提前谢谢!
答案 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(),然后()()完成;。