eiu*_*165 0 asp.net-mvc json json.net
我在读Rick Strahls
我希望能够将JObject用于该操作.我写了一个像这样的控制器
public class AlbumsController : Controller
{
[System.Web.Http.HttpPost]
public string PostAlbum(JObject jsonData)
{
return "success";
}
}
Run Code Online (Sandbox Code Playgroud)
前端看起来像这样
当ajax被调用时,我得到一个错误
$("#a").click(function () {
var album = {
AlbumName: "PowerAge",
Entered: "1/1/1977"
}
$.ajax(
{
url: "Albums/PostAlbum",
type: "POST",
contentType: "application/json",
data: JSON.stringify({ Album: album }),
success: function (result) {
alert(result.Result);
}
});
});
Run Code Online (Sandbox Code Playgroud)
POST http://localhost:50066/Albums/PostAlbum 500 (Internal Server Error) jquery-1.7.1.js:8102发送jquery-1.7.1.js:8102 jQuery.extend.ajax jquery-1.7.1.js:7580(匿名函数)专辑:74 jQuery.event.dispatch jquery-1.7.1 .js:3256 elemData.handle.eventHandle
您的控制器应该来自ApiController,而不是来自Controller:
public class AlbumsController : ApiController
Run Code Online (Sandbox Code Playgroud)
此外,如果您使用默认路由设置:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
我建议你使用RESTful动作名称:
public class AlbumsController : ApiController
{
[HttpPost]
public string Post(JObject jsonData)
{
return "success";
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
$('#a').click(function () {
var album = {
AlbumName: "PowerAge",
Entered: "1/1/1977"
}
$.ajax({
url: 'api/albums',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ Album: album }),
success: function (result) {
alert(result);
}
});
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2311 次 |
| 最近记录: |