如何在ID上解决这个错误?

时间:2015-02-03 08:06:09

标签: c# asp.net-web-api

我在我的项目中使用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>

1 个答案:

答案 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">

                   ^^^^