【发布时间】:2017-04-26 11:33:19
【问题描述】:
我正在开发一个 asp.net mvc 应用程序,我在其中使用实体框架和 AngularJS。我正在使用 AngularJS 的 $http 服务来调用操作方法并从服务器检索数据。从服务器检索到正确的数据(我通过调试确认了这一点),但是在 action 方法返回检索到的数据并且触发错误回调函数而不是成功回调函数之后,不知何故发生了错误。然后我在浏览器的控制台中得到一个状态 500。
以下是涉及的代码块:
(来自 angularjs 控制器)
$http({
url: rootUrl + "User/GetUser",//'@Url.Action("GetUser","User")',
method: 'POST',
params: {
uname: $scope.username,
pword: $scope.pass
}
}).then(function (response) {
alert('success!');
$scope.user = response.data;
if ($scope.user.Fullname != undefined) {
$http({
url: rootUrl + "Session/Set",
method: "POST",
data: {
"key": "curr_user",
"value": JSON.stringify($scope.user)
}
});
window.location.href = rootUrl + 'Product/List/';
} else {
//invalid login
$("input[name='password']").select();
$("#validation-summary").html("Wrong email or password.");
$scope.invalidlogin = true;
$(btnLogin).removeClass('disabled');
$(btnLogin).text("Submit");
}
(来自 mvc 控制器)
[HttpPost]
public JsonResult GetUser(string uname, string pword)
{
JBManager manager = null;
using (SE_Context db = new SE_Context())
{
try
{
manager = db.Managers
.Include("Transactions.Items")
.Where(m => m.Username == uname && m.Password == pword)
.FirstOrDefault();
//At this point, manager has the desired data
return Json(manager, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return null;
}
}
}
非常感谢任何帮助。谢谢!
更新: 在我使用实体框架之前一切正常。 (以防万一它与问题有关)
【问题讨论】:
-
首先,您需要在动作标头和 ajax 调用中从 HttpPost 更改为 HttpGet,并且在从动作返回时包括 JsonRequestBehaviour.AllowGet。
-
那么如何正确处理异常而不是“返回null”?
-
@Rudresh 将请求类型从 POST 更改为 GET 不会在 URL 中暴露用户名和密码吗?
-
不返回null,而是返回Json("")
-
@TigOldBitties 怎么样?
标签: angularjs asp.net-mvc entity-framework