我创建了View in action页面:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Title = "Home Page";
return View();
}
}
在视图的某个时刻,我使用AJAX对另一个控制器进行POST调用:
function Save() {
if (sensorData) {
$.ajax({
url: '/../Sensor/SaveData',
type: 'POST',
contentType: 'application/json',
dataType: 'json'
});
}
else {
alert("No Data.");
}
}
这是API控制器的代码:
public class SensorController : ApiController
{
public IHttpActionResult SaveData()
{
try
{
return Ok();
}
catch (Exception)
{
return BadRequest("Data not saved");
}
}
}
但是我收到了这个错误: " NetworkError:404 Not Found - http://localhost:7486/Sensor/SaveData"
知道我为什么会收到错误吗?以及如何解决问题。
答案 0 :(得分:1)
看起来您正在尝试使用MVC路由调用API控制器。
如果您检查WebApiConfig
,您可能刚刚定义了DefaultApi
路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
如果是这种情况,请更改您的控制器操作以添加[HttpPost]
属性
public class SensorController : ApiController
{
[HttpPost]
public IHttpActionResult SaveData()
{
try
{
return Ok();
}
catch (Exception)
{
return BadRequest("Data not saved");
}
}
}
然后进行Ajax调用:
function Save() {
if (sensorData) {
$.ajax({
url: '/api/Sensor',
type: 'POST',
contentType: 'application/json',
dataType: 'json'
});
}
else {
alert("No Data.");
}
}
注意:此时您不会将任何数据发布到服务器。