アプリケーションにURLルーティングの問題があります。私はこの問題に取り組んでみましたが、実際には何も進んでいません。
したがって、私は次のAJAXリクエストをクライアント側で作成しています。
$.ajax({
type: 'GET',
url: programState.getBaseUrl() + 'Playlist/GetPlaylistsByUserId',
dataType: 'json',
data: {
userId: user.get('id')
},
success: function (data) {
console.log("JSON data:", data);
},
error: function(error) {
console.error(error);
}
});
ネットワークは次のとおりです。
サーバーエラーは次のとおりです。
GETおよびGetPlaylistsByUserIdのコントローラーのメソッドは次のとおりです。
[HttpGet]
public ActionResult Get(Guid id)
{
Playlist playlist = PlaylistDao.GetById(id);
return new JsonDataContractActionResult(playlist);
}
[HttpGet, ActionName("GetPlaylistsByUserId")]
public ActionResult GetPlaylistsByUserId(Guid userId)
{
IList<Playlist> playlists = PlaylistDao.GetByUserId(userId);
return new JsonDataContractActionResult(playlists);
}
そして最後に、これが私のルートです:
routes.MapRoute(
"getPlaylistsByUserId",
"{controller}/{userId}",
new { controller = "Playlist", action = "GetPlaylistsByUserId" },
new { httpMethod = new HttpMethodConstraint("GET") }
);
routes.MapRoute(
"post-Playlist",
"{controller}",
new { controller = "Playlist", action = "create" },
new { httpMethod = new HttpMethodConstraint("POST") }
);
routes.MapRoute(
"get-Playlist",
"{controller}/{action}/{id}",
new { controller = "Playlist", action = "get" },
new { httpMethod = new HttpMethodConstraint("GET") }
);
routes.MapRoute(
"put-Playlist",
"{controller}",
new { controller = "Playlist", action = "update" },
new { httpMethod = new HttpMethodConstraint("PUT") }
);
routes.MapRoute(
"delete-Playlist",
"{controller}/{id}",
new { controller = "Playlist", action = "delete" },
new { httpMethod = new HttpMethodConstraint("DELETE") }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional}
);
私が知る限り、URLは「Get」アクションにルーティングされていますが、「GetPlaylistsByUserId」アクションにルーティングされることを意図しています。サーバーエラーがメソッド「Get」のパラメータ「id」を探していることを示しているため、これが発生していると思います。
他のアクションが明確にマッピングされているように見えるので、なぜこれが発生するのかわかりません...?