Я не могу опубликовать данные формы из веб-формы ASP.NET на моем контроллере Web API, поскольку я получаю сообщение об ошибке 404 или «Не найдено».
Вот код в моем Global.asax.vb файле:
Imports System.Web.Optimization
Imports System.Web.Http
Public Class Global_asax
Inherits HttpApplication
Sub Application_Start(sender As Object, e As EventArgs)
' Fires when the application is started
RegisterRoutes(RouteTable.Routes)
BundleConfig.RegisterBundles(BundleTable.Bundles)
RouteTable.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", New With {.id = RouteParameter.Optional})
End Sub
End Class
Это AJAX в веб-форме:
$.ajax({
type: 'POST',
url: 'api/UserApi',
data: $('form').serialize(),
success: function(response) {
var result = JSON.parse(response);
if (result.validationError) {
$('.jumbotron').prepend('<div class="alert alert-danger"><strong>Make sure to fill in all fields.</strong></div>');
if ($('.alert-danger').length > 1) {
$('.alert-danger').last().remove();
}
}
else if (result.error) {
$('.jumbotron').prepend('<div class="alert alert-danger"><strong>User with that email address already exists!</strong></div>');
if ($('.alert-danger').length > 1) {
$('.alert-danger').last().remove();
}
}
else {
if ($('.alert-danger').is(':visible')) {
$('.alert-danger').remove();
}
$('.jumbotron h1').remove();
$('form').replaceWith('<div class="alert alert-success"><strong>User created successfully!</strong></div>');
}
},
error: function(error) {
console.log(error);
}
});
Наконец, это код в контроллере Web API:
Imports System.Net
Imports System.Web.Http
Imports System.Web.Http.Results
<RoutePrefix("api/UserApi")>
Public Class UserApiController
Inherits ApiController
' POST api/<controller>
Public Sub PostValue(<FromBody()> ByVal email As String, name As String)
Dim user = New User With {
.Email = email,
.Name = name
}
Dim userDbContext = New UserDBContext()
userDbContext.Users.Add(user)
End Sub
End Class
Контроллер называется " UserApiController.vb " и находится в главном каталоге проекта. Я попытался поместить ту же самую маршрутизацию в файл RouteConfig.vb в каталоге App_Start , а также использовать аннотацию для маршрутизации, которую вы видите над объявлением моего класса в моем контроллере, и все еще не повезло. Кроме того, я написал маршрут как RouteTable.Routes.MapHttpRoute("DefaultApi", "api/{action}/{id}", New With {.controller = "UserApi", .id = RouteParameter.Optional})
и отправляю в URL api / PostValue в AJAX.