2012-01-19 9 views
4

を認識していない私はこのような更新機能を持っている:はリフレッシュのために指定されたオブジェクトが

public void Update(HomeBanner homebanner) 
    { 
     homebanner.EnsureValid(); 
     DataSource.DataContext.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, homebanner); 
     DataSource.DataContext.SubmitChanges(); 
    } 

と私は更新コントローラ

[AcceptVerbs(HttpVerbs.Post)] 
    //[ValidateAntiForgeryToken] 
    [ValidateInput(false)] 
    public ActionResult ManageImages(int ? id,FormCollection form) 
    { 
     HomeBanner homebanner= BannerRepository.RetrieveById(id); 
     this.TryUpdateModel(homebanner); 
     string photoName = saveImage("photo"); 
     if (photoName != string.Empty) 
     homebanner.ImageID = photoName; 
     BannerRepository.Update(homebanner); 
     return RedirectToAction("list", "Admin"); 

    } 

と、ビュー書く:

<% using (Html.BeginForm("ManageImages", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    {%> 
<h3>Manage Images</h3> 
     <div class="label-field"> 
     <label for="ID">Chọn vị trí:</label> 
     <%= Html.DropDownList("ID", DataHelper.Banner().ToList().ToSelectList("value", "name",Model.HomeBanner.ID.ToString()))%> 
     </div> 
     <div class="label-field"> 
     <label for="photo"> 
      Chọn hình</label> 
     <input type="file" name="photo" value=""/> 
     </div> 
     <div class="label-field"> 
     <label for="Link"> 
      Liên kết</label> 
     <input type="text" name="Link"/> 
     </div> 
     <p> 
      <input type="submit" value="Lưu" /> 
     </p> 
<% } %> 

データも取得されますが、更新手順は成功しません。これはここに表示されます

DataSource.DataContext.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, homebanner); 

例外をスローする:リフレッシュに指定されたオブジェクトは認識されません。 なぜ私はデバッグ時にオブジェクトにデータが埋め込まれているのを知りません。 Plzの誰かが私を助ける!

答えて

1

DataContextのインスタンスをチェックします。元のオブジェクトが存在しない別のインスタンスを使用している可能性があります。

存在しない場合は、まずオブジェクトをデータコンテキストに追加してから、refreshを呼び出す必要があります。

P.S.ヒント:データとやりとりするためのモデルやサービスを作る、コントローラーで見た目が乱雑に見える) '

+2

はい、本当にありがとうございます。信じられますか、最終的に私は問題を見つけます:私はHomeBannerテーブルのプライマリキーを作成するのを忘れました!! –

関連する問題