2011-06-01 37 views
0
[HttpPost] 
    public ActionResult Edit(FormCollection form) 
    { 
     // Get movie to update 
     var id = Int32.Parse(form["id_foto"]); 
     var fotoToAdd = _db.foto.First(m => m.id_foto == id); 

     // Deserialize (Include white list!) 
     TryUpdateModel(fotoToAdd, new string[] { "descricao" }, form.ToValueProvider()); 

     //Here I try to change my foreign key, but i get this exception: "The property 'id_album' part of the key information of the object and can not be changed." 
     fotoToAdd.id_album = Convert.ToInt32(form["id_album"]); 

     //file upload 
     if (Request.Files.Count > 0) 
     { 
      int tamanho = (int)Request.Files[0].InputStream.Length; 
      byte[] arq = new byte[tamanho]; 
      Request.Files[0].InputStream.Read(arq, 0, tamanho); 
      byte[] arqUp = arq; 
      fotoToAdd.imagem = arqUp; 
     } 

     //Validation 
     if (String.IsNullOrEmpty(fotoToAdd.descricao)) 
      ModelState.AddModelError("Descrição", "Ops... campo obrigatório"); 
     if (String.IsNullOrEmpty(fotoToAdd.id_album.ToString())) 
      ModelState.AddModelError("Album", "Ops... campo obrigatório"); 
     if (fotoToAdd.imagem == null) 
      ModelState.AddModelError("Foto", "Ops... campo obrigatório"); 

     //If success, Update 
     if (ModelState.IsValid) 
     { 
      _db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     //Else, return view 
     return View(fotoToAdd); 
    } 

//這裏我嘗試更改我的外鍵,但是我得到以下異常:對象,不能改變。「如何使用ASP.NET MVC 2 +實體更改外鍵

fotoToAdd.id_album = Convert.ToInt32(form [「id_album」]);

我一直在研究如何做到這一點,但我有困難,我怎麼做這個更新操作

+0

你不具備導航屬性像foto類中的fotoToAdd.album?如果你有它,你可以設置像fotoToAdd.album = _db.album.first ... – 2011-06-01 03:34:31

回答