我正在使用AngularJS发布到我的WebAPI(C#/ .Net)。它工作正常,但我从UserProfile对象中删除了我的密码字段(因为我使用的是实体框架,并且不希望在该表中包含该列),现在我将密码作为字符串从界面传递通过发布到UsersController。
问题: UsersController永远不会收到帖子,因为浏览器会抛出错误:
TypeError:无法分配给只读属性'方法'密码
这是我的AngularJS代码,用于向UsersController发送帖子:
var _addUser = function(newUser, password) {
var deferred = $q.defer();
alert('_addUser password is ' + password);
**//********** password gets here just fine**
$http.post("/api/v1/users", newUser, password) **// <-- this is where it breaks**
.then(function(result) {
//success
var newlyCreatedUser;
angular.copy(result.data, newlyCreatedUser);
_users.splice(0, 0, newlyCreatedUser);
deferred.resolve(newlyCreatedUser);
},
function () {
//error
deferred.reject();
});
return deferred.promise();
}
这是我的UsersController方法,应该将内容发送到:
public HttpResponseMessage Post([FromBody]UserProfile newUser, string password)
{
if (newUser.Created == default(DateTime))
{
newUser.Created = DateTime.UtcNow;
}
if (_repo.AddUser(newUser, password)
&& _repo.Save())
{
return Request.CreateResponse(HttpStatusCode.Created
, newUser);
}
else
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
答案 0 :(得分:0)
我决定不在单独的字符串中收集密码,只是告诉Entity Framework忽略带有[NotMapped]装饰的Password类。