我试图通过角度调用C#函数 我看到了一个模板怎么做,我得到了这个错误。 o试图在谷歌寻找解决方案但它是一般的问题。 我很确定我没有正确调整我的代码 这是javascript代码:
var app = angular.module("loginApp", []);
app.controller("loginC", ['$scope', '$http',function ($scope, $http) {
$scope.login = function () {
// $http.post('/login.aspx/Login', { userName: $scope.vm.username, password: $scope.vm.password });
var httpreq = {
method: 'POST',
url: 'login.aspx/Login',
data: { userName: $scope.vm.username, password: $scope.vm.password }
}
$http(httpreq).success(function (response) {
alert("Saved successfully.");
})
};
}]);
这是C#函数声明(此函数驻留在文件后面的登录代码中):
protected void Login(String userName,String password)
{
//some code
}
更新
我通过向httpreq变量
添加“标题”来更改HTTP的配置var httpreq = {
method: 'POST',
url: '/login.aspx/Login',
headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'},
data: { username: $scope.vm.username, password: $scope.vm.password }
}
$http(httpreq).success(function () {
alert("Saved successfully.");
})
错误消失了,警报加速,但我把BP放在服务器端功能的开头,我仍然无法到达那里,
我已经尝试添加[webmethod]和[HttpPost]装饰。
UPDATE2
当我将网址更改为
时url: 'login.aspx'
(没有函数名)并且我在PageLoad函数中设置了BP,我成功地到达了服务器端的BP,这意味着问题在于函数的路径。 我该怎么办?
答案 0 :(得分:0)
试试这个
var httpreq = {
method: 'POST',
url: '/login.aspx/Login',
headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'},
data: { userName: $scope.vm.username, password: $scope.vm.password }
}
$http(httpreq).success(function () {
alert("Saved successfully.");
})
[WebMethod]
[HttpPost]
protected static void Login(String userName,String password)
{
//some code
}
你正在传递username
小而你在weblthod中用于camelCase,即userName
。也使用static
webmethod。