使用$. getjson (url)从视图调用控制器动作方法
本文关键字:控制器 调用 方法 视图 getjson url 使用 | 更新日期: 2023-09-27 17:51:07
我有一个控制器,它从视图中接受一个参数,它应该返回json数据到相同的视图。
在控制器动作上,我有
public ActionResult GetDataById(int id)
{
var data = ...give me data...
return Json(data, JsonRequestBehavior.AllowGet);
}
On the view I have
<ul id="#myList">
</ul>
(function () {
var updateList = function (competitions) {
$("#myList").html($("listTemplate").render(competitions))
.listview();
};
$(document).one("pageinit", function () {
var url = "/Home/GetDataById/1";
$.getJSON(url)
.then(updateList);
});
} ());
<script id="listTemplate" type="text/x-jsrender">
<li>
<a href="{{:Name}}">{{:Id}}
<span class="ui-li-count">{{:CountedData}}</span>
</li>
</script>
在调试时,GetDataById根本没有命中。当我在调用$。我得到了正确的url。我哪里做错了?
更新:路由配置
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
namespaces: new[] { "MyWebApp.Controllers" },
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
如果指定Id作为参数会发生什么
var url = "/Home/GetDataById";
$.getJSON(url, { id: 1 })
只是一个大胆的猜测,但是您是在本地运行站点吗?如果是,它是否在虚拟目录中(例如,您要去http://localhost/home/index
还是http://localhost/mysite/home/index)
?
你可以试试:
var url = @Url.Content( "~/Home/GetDataById/1" );
我使用$。getJSON和Quite M. Porta’s描述的一样,但有一点不同。我在URL后面加了一个'/'
$.getJSON("/Home/GetDataById/", { id: 1 }).then(updateList);
如果这些都失败了,你可以试试。