2009-09-10 68 views
5

看起來好像我們的團隊維護一個具有 客戶端的Intranet 用戶保證啓用JavaScript,我們知道我們可以介入並更加「徹底」地使用jQuery。我們的系統非常大,所以即使我們在ASP.NET MVC應用程序中使用了區域,頁面添加,編輯,刪除和查看某個區域的每個子系統的數據量也非常大。一個地區的子系統可以有大約二十張數據表。如果有20個數據表,並且您有單獨的頁面要添加,編輯,刪除和查看它們,這意味着總共有頁面。現在假設每個區域有20個子系統,那麼單個區域就有20 * 60個頁面,我們的Intranet上有大約15個區域。你明白了,這很重要。ASP.NET MVC中的jQuery CRUD

轉到我真實的觀點,我想通過使用jQuery功能在頁面上顯示一個數據表,點擊「刪除」並使用確認按鈕給我一個刪除對話框然後提交表單,重定向到正確的行爲併爲我完成工作。現在我需要在以下方面提供一些指導:

  1. 如果我想刪除而不回覆所有使用ASP.NET MVC,那麼執行此操作的過程是什麼?這包括點擊刪除,關閉並檢查它是否可以刪除(FK關係必須以正確的方式處理),然後如果能夠刪除它並從視圖中的表中刪除該行,而不刷新頁面。
  2. 如何從使用jQuery的異步進程調用刪除操作?這樣做明智嗎?通常我們使用Html.ActionLink。我需要將它包裹在一個表單中嗎?
  3. 這同樣適用於編輯和更新,再次,最好的方法是什麼?

我正在尋找一個優雅的解決方案,並不是很難申請每一頁,我必須這樣做的東西。任何輸入將不勝感激。

+1

只是好奇,你看着從MS動態數據框架?我認爲它可能支持MVC,但不是積極的。如果我理解正確,它會減少你的頁數。正如我剛纔所說,只是好奇,如果你看這個網站。 – JoshBerke 2009-09-10 15:04:10

+2

動態數據不能很好地與MVC配合使用,但MVC 2具有默認的模板化視圖,可爲您提供內置動態數據更有用的部分。 – 2009-09-10 15:16:53

回答

3

我正在使用鏈接到斷火通過AJAX POST(無回傳)刪除操作的項目。

$("a.deleteLink").click(function(event) 
{ 
    event.preventDefault(); 
    if (confirm("Are you sure you want to delete this section?")) 
    { 
     //TODO Display processing indicator 

     var myId = /* id of element */ ; 

     $.post("/Section/Delete", { id: myId }, function(data) 
     { 
      if (data == "Success") 
      { 
       //handle success 
       //TODO Fade out element using .fadeOut() 
      } 
      else 
      { 
       //handle error 
      } 
     }); 
    } 
}); 

控制器方法只是在/Controllers/SectionController.cs中。只應接受POST,以及更改數據庫的任何操作。

private SectionRepository secRepo = new SectionRepository(); 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Delete(long id) 
    { 
     Section sec = secRepo.GetById(id); 

     secRepo.Delete(sec); 
     secRepo.Save(); 

     return Content("Success"); 
    } 
+1

我覺得這看起來不錯。我認爲你的'// TODO顯示處理指示符'屬於'.post()'動作之上/之前的行,而不是在它的回調函數中(它只會在你的動作完成後觸發) ,而不是當你在等待...) – Funka 2009-09-11 05:14:22

+1

哦,這看起來不錯。我從來沒有見過'返回內容(「消息」);'之前。你如何做if(confirm(「message」)== true)?爲什麼不只是'if(confirm(「message」))'? – Kezzer 2009-09-11 08:18:59

+0

你們是對的。這仍然是非常早期的「快速和骯髒」的代碼。 控制器中的返回內容(「成功」)不用於顯示。只是讓JavaScript知道它是成功的。如果任何人有更好的方法來檢查ajax文章是否成功的建議讓我知道。 我更新了一些示例代碼以反映這些項目。 – 2009-09-11 17:37:14

2

乍得邁爾斯有一個這樣的good article

還有來自Dino Esposito的one

+0

Dino的內容非常豐富且完整。不過,我將不得不在後面更好地閱讀它。 – Kezzer 2009-09-10 15:36:00

3

剛剛完成了一些模板的視頻,你可以使用Subsonic獲得ASP.NET MVC。雖然我還沒有實現這一點,甚至嘗試了,它看起來不可思議!看看here


我不知道,如果這是你的還是不是一個可行的選擇,但我們最近有類似你的需求,我們推出我們的主要應用程序作爲一個ASP.NET MVC應用程序(使用 jQgrid),然後一個輔助的ASP.NET Web窗體應用程序,用於使用動態數據的管理功能。這工作非常好,爲我們節省了大量的時間。

它也看起來像DynamicData and MVC將在一些下一個版本中一起。

其他閱讀...
* David Hayden
* rbqsoft
* Sharp Architecture Wiki