2011-03-18 39 views
0

當我用linq更新記錄到sql時,我的DeleteLesson()方法被多次調用。LINQ to sql在asp.net中進行多個調用mvc 3

我的控制器看起來是這樣的:

public ActionResult Delete(int id) 
    { 

     deleteLesson(id); 

     return Content("<p style=color:red><strong>Deleted...</strong></p>"); 
    } 

    public void deleteLesson(int id) 
    { 
     LLDataContext storeDB = new LLDataContext(); 

      lesson lesson = (from l in storeDB.lessons 
          where l.lessonID == id 
          select l).Single(); 

      lesson.statusID = DELETED; 
      lesson.dateDeleted = DateTime.Now; 
      lesson.deletedByUserID = getAppUserID(); 

      try 
      { 
       storeDB.SubmitChanges(); 
      } 
      catch (Exception e) 
      { 

       Console.WriteLine(e.Message); 

       storeDB.SubmitChanges(); 
      } 
    } 

而我的觀點是這樣的

@Ajax.ActionLink("Delete", "Delete", 
            new { id = item.lessonID }, 
            new AjaxOptions { 

                 HttpMethod = "POST", 
                 UpdateTargetId = @rowNumber.ToString() 
            } 
            ) 

什麼想法?

編輯

另外,如果我在阿賈克斯選擇使用confirm = "Do you want to delete"我必須點擊好三倍。

+1

這是一個真正的MVC問題,如果我理解正確,那麼與LINQ無關。 – BrokenGlass 2011-03-18 17:48:37

+0

你怎麼知道該方法被多次調用?調試器是否產生異常? – Zakaria 2011-03-18 17:58:40

+0

我知道它由於幾個原因運行多次,如果我設置了一箇中斷點,它將觸發deleteLesson()三次。它也會引發重複的行異常。 – marknery 2011-03-18 19:01:47

回答

0

您是否獲得了一個帖子和一個打電話給它?
嘗試使

public ActionResult Delete(int id) 

[HttpPost()] 
public ActionResult Delete(int id) 

特定的HTTP POST IMO。你真的希望用戶瀏覽到/ Lesson/Delete/5,並讓它工作嗎?我認爲你只想從回顯中處理他們將要刪除的課程。

+0

頂行被切斷,僅作爲上面的[HttpPost]使用。 – marknery 2011-03-18 18:59:15