我有一个控制器从视图中接受一个参数,它应该将json数据返回到同一个视图。
关于控制器动作我有
public ActionResult GetDataById(int id)
{
var data = ...give me data...
return Json(data, JsonRequestBehavior.AllowGet);
}
在视图上我有
<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根本没有被攻击。当我在调用$ .getJSON之前放置alert(url)时,我得到了正确的url。我在这里做错了什么?
更新: 路线配置
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
namespaces: new[] { "MyWebApp.Controllers" },
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 0 :(得分:1)
如果您将Id指定为参数
,会发生什么var url = "/Home/GetDataById";
$.getJSON(url, { id: 1 })
答案 1 :(得分:1)
只是一个疯狂的猜测,但你是在本地运行该网站吗?如果是在虚拟目录中(即你是http://localhost/home/index
还是http://localhost/mysite/home/index)
?
你可以试试这个:
var url = @Url.Content( "~/Home/GetDataById/1" );
答案 2 :(得分:1)
我正在使用Quite M. Porta所描述的$ .getJSON,但略有不同。我在URL的末尾添加了一个“/”
$.getJSON("/Home/GetDataById/", { id: 1 }).then(updateList);
如果一切都失败了,你可以试试。