Я пытаюсь вызвать метод контроллера Web Api из представления с помощью Ajax. Мой Аякса вызов с точки зрения заключается в следующем,MVC 4: Вызов контроллера Api из вида
function loginuser() {
var name = $("#txt_usrname").val();
var pass = $("#txt_password").val();
var source = {
'username': name,
'password': pass,
}
$.ajax({
type: "POST",
dataType: "json",
data: source,
url: 'api/Login', // url of Api controller not mvc
success: function (data) {
if(data.redirect)
alert("Redirect true !");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(errorThrown);
}
});
}
Я могу назвать контроллер апи из любой точки зрения, за исключением следующего сценария.
После установки URL входа в WebConfig следующим
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" path="/" defaultUrl="~/Home/Index" name=".ASPXFORMSAUTH" timeout="2880"/>
</authentication>
Файл ~/Account/Login указывает на контроллер MVC. Если я вызываю контроллер api с помощью ajax из ~/Account/Login view, вызов ajax сопоставляется с контроллером MVC ~/Account/Login вместо Api Controller api/Login. Но если я удалю тэг аутентификации из web.config и загрузим Account/Login как представление по умолчанию, вызов ajax сопоставляется с контроллером api, как и ожидалось.
Я попытался изменить URL-адрес в вызове ajax, но независимо от того, что является URL-адресом, вызов ajax всегда отображается на контроллер MVC вместо имени контроллера, которое я указываю в качестве URL-адреса.
Это происходит только для внутреннего тега аутентификации Loginurl. Если я удалю тег аутентификации и использую вызов ajax в любом другом представлении, он отлично работает.
Кто-нибудь сталкивался с этим проблемы ?, извините, если я пропускаю очевидное, но я застрял на этом в течение нескольких часов ...
мне нужно все действия, которые будут обрабатываться контроллерами Api, а не MVC, потому что проект должен использоваться с Phonegap.
Любая помощь, советы, даже если не ответ будет оценено ...
Спасибо заранее.
Вот мой маршрут таблица
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
и webApiConfig
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Вы можете оставлять свои сообщения? – SOfanatic