<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # 刪除產品 刪除產品與創建或編輯操作相比,非常簡單,因為刪除我們不需要構建表單。 首先,在`IProductAppService`接口中添加一個新方法: ``` Task DeleteAsync(Guid id); ``` 然后,在`ProductAppService`類中實現它: ``` public async Task DeleteAsync(Guid id) { ????await _productRepository.DeleteAsync(id); } ``` 現在向產品列表添加一個新刪除按鈕。打開`Index.cshtml.js`,并在**Edit**操作之后添加以下定義(在`rowAction.items`數組中): ``` { ????text: l('Delete'), ????confirmMessage: function (data) { ????????return l('ProductDeletionConfirmationMessage',data.record.name); ????}, ????action: function (data) { ????????productManagement.products.product ????????????.delete(data.record.id) ????????????.then(function() { ????????????????abp.notify.info(l('SuccessfullyDeleted')); ????????????????dataTable.ajax.reload(); ????????????}); ????} } ``` `confirmMessage`用于在刪除之前獲得用戶確認。`productManagement.products.product.delete`函數由 ABP 框架動態創建。通過這種方式,可以直接在 JS 代碼中調用服務器端方法。我們只需傳遞當前記錄的 ID。`then`函數傳遞一個回調函數,用于刪除之后的操作。最后,我們使用`abp.notify.info`通知用戶,最后刷新數據表。 我們使用了一些本地化文本,因此我們需要在本地化`en.json`文件中添加以下代碼: ``` "ProductDeletionConfirmationMessage": "Are you sure to delete this book: {0}", "SuccessfullyDeleted": "Successfully deleted!" ``` 再次訪問 web 查看結果: ![](https://img.kancloud.cn/ce/da/ceda21a5015af9919a9287c84d6035c7_1116x454.png) 因為現在有兩個操作按鈕,所以**編輯**按鈕會自動變成一個下拉選項。當您單擊**刪除**操作時,您會收到一條確認消息: ![](https://img.kancloud.cn/5b/ef/5befd88e4d78b6a94deae355680e2e28_1125x528.png) 如果你點擊在**是**按鈕上,您將在頁面上看到一條通知,并且數據表將被刷新。 實施產品刪除非常簡單。ABP 的內置功能幫助我們實現了常見的模式,例如客戶端到服務器的通信、確認對話框和 UI 通知。 請注意,`Product`實體派生于`FullAuditedAggregateRoot`,所以它使用了軟刪除。刪除產品后檢查數據庫,您會看到它并沒有真正刪除,但是`IsDeleted`字段已經設置為`true`(邏輯刪除不是物理刪除)。下次查詢商品時,已刪除的商品會自動過濾掉,不包含在查詢結果中。這是由 ABP 框架的數據過濾系統完成的。 ## 概括 在本章中,我們創建了一個完整的 CRUD 頁面。我們介紹了解決方案中的所有層,并了解了ABP 的程序開發的基本方法。 同時,也向您介紹了許多不同的概念,例如實體、存儲庫、數據庫映射和遷移、自動化測試、API 控制器、動態 JavaScript 代理、對象映射、軟刪除等。ABP 是一個全棧應用程序框架,可幫助您通過最佳實踐來實現這些概念。它提供了必要的基礎設施,使您的日常開發更容易。 此時您可能不了解所有細節。其余章節會深入研究這些概念并展示它們的細節和不同的用例。 以上的示例相對簡單,它不包含任何重要的業務邏輯,因為我引入了許多概念目的是想讓大家對這些基礎概念有個初步的理解而不是業務復雜性。在此示例中,我忽略了授權。授權將在\[*第 7 章*\] *探索橫切關注點*”中進行說明。 在一本書中演示一個具有現實復雜性的示例并不容易。然而,我已經為本書的讀者準備了一個完整的參考應用程序,它具有真實世界的特點和復雜性。參考程序是開源的,可在 GitHub 上獲得。 下一章將介紹該參考程序并展示參考解決方案的功能、分層和代碼結構。其余章節會經常引用該示例的源代碼。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看