我在我的项目中使用Web API和MVC。我将一个id(PersonID)从表(Person)保存到另一个表(Password)时出错。我的问题是,当我试图将PersonID保存到密码表时,它保存零而不是在人员表上保存自动生成的PersonID。
控制器
// POST: api/Person1
[ResponseType(typeof(Person1))]
public IHttpActionResult PostPerson1(UserVM vm)
{
var pers = new Person1
{
PersonID = vm.PersonID,
Title = vm.Title,
FirstName = vm.FirstName,
LastName = vm.LastName,
};
var word = new Password();
using (var context = new VybeEstoreEntities2())
{
context.People1.Add(pers);
word.PersonID = pers.PersonID;
word.Password1 = vm.Password1;
context.Passwords.Add(word);
context.SaveChanges();
}
return Ok(vm);
}
UserVM
public class UserVM
{
public int PersonID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string Password1 { get; set; }
}
查看
<div class="control-group" ng-class="{error: form.PersonID.$invalid}">
<label class="control-label">PersonID</label>
<div class="controls">
<input type="text" class="form-control" ng-model="lis.PersonID" id="PersonID" placeholder="" readonly="readonly">
</div>
</div>
<div class="control-group" ng-class="{error: form.Password.$invalid}">
<label class="control-label">Password</label>
<div class="controls">
<input type="text" class="form-control" ng-model="lis.Password1" id="Password1" placeholder="">
</div>
</div>
答案 0 :(得分:1)
您应该填充name
元素的input
,因为它被用作唯一键,通过网络发送其值,而不是ID
。另外,我想知道readonly
是否也会发送它们,也许你需要制作一个hidden
input
,但这只是你必须自己检查的事情。
例如:
<input type="text" name="PersonID" class="form-control" ng-model="lis.PersonID" id="PersonID" placeholder="" readonly="readonly">
^^^^