ABP進階教程3 - 優化編輯

来源:https://www.cnblogs.com/IT-Evan/archive/2019/10/14/ABP19.html

點這裡進入ABP進階教程目錄 我們嘗試在新增/編輯界面增加一個下拉框用來代替輸入框編輯Status 添加實體 打開領域層(即JD.CRS.Core)的Entitys目錄 //用以存放實體對象添加一個類StatusCode.cs //狀態信息 更新模型 更新查詢視圖模型 打開展示層(即JD.CRS.W ...


點這裡進入ABP進階教程目錄 

我們嘗試在新增/編輯界面增加一個下拉框用來代替輸入框編輯Status
  

添加實體

打開領域層(即JD.CRS.Core)的Entitys目錄 //用以存放實體對象
添加一個類StatusCode.cs //狀態信息

using System;
using System.Collections.Generic;
using System.Text;

namespace JD.CRS.Entitys
{
    public enum StatusCode : byte
    {
        Enabled = 0,
        Disabled = 1
    }
}

更新模型

更新查詢視圖模型

打開展示層(即JD.CRS.Web.Mvc)的Models/Course/CourseListViewModel.cs //Course查詢視圖模型

新增GetStatusList方法 //獲取狀態列表

 1 public StatusCode? Status { get; set; }
 2 
 3 public List<SelectListItem> GetStatusList(ILocalizationManager localizationManager)
 4 {
 5     var list = new List<SelectListItem>
 6     {
 7         new SelectListItem
 8         {
 9             Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, "PleaseSelect"),
10             Value = "",
11             Selected = Status == null
12         }
13     };
14 
15     list.AddRange(Enum.GetValues(typeof(StatusCode))
16         .Cast<StatusCode>()
17         .Select(status =>
18             new SelectListItem
19             {
20                 Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, $"StatusCode_{status}"),
21                 Value = status.ToString(),
22                 Selected = status == Status
23             })
24     );
25 
26     return list;
27 }
View Code

更新編輯視圖模型

打開展示層(即JD.CRS.Web.Mvc)的Models/Course/EditCourseModalViewModel.cs //Course編輯視圖模型

新增GetStatusList方法 //獲取狀態列表

 1 public List<SelectListItem> GetStatusList(ILocalizationManager localizationManager)
 2 {
 3     var list = new List<SelectListItem>
 4     {
 5     };
 6 
 7     list.AddRange(Enum.GetValues(typeof(StatusCode))
 8         .Cast<StatusCode>()
 9         .Select(status =>
10             new SelectListItem
11             {
12                 Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, $"StatusCode_{status}"),
13                 Value = status.ToString(),
14                 Selected = status == Status
15             })
16     );
17 
18     return list;
19 }
View Code

更新控制器

打開展示層(即JD.CRS.Web.Mvc)的Controllers/CourseController.cs //Course控制器

更新EditCourseModal方法 //向EditCourseModalViewModel傳參數Status

public async Task<ActionResult> EditCourseModal(int courseId)
{
    var course = await _courseAppService.Get(new EntityDto<int>(courseId));
    var model = new EditCourseModalViewModel
    {
        Course = course,
        Status = course.Status
    };
    return View("_EditCourseModal", model);
}

更新創建視圖

打開展示層(即JD.CRS.Web.Mvc)的Views/Course/Index.cshtml //Course查詢視圖

添加下拉框Status //以替代輸入框Status

<div class="row clearfix">
    <div class="col-sm-12">
        <div class="form-line">
            <label class="form-label">@L("Status")</label>
            @Html.DropDownListFor(
            model => model.Status,
            Model.GetStatusList(LocalizationManager),
            new
            {
                @class = "form-control",
                id = "Status"
            })
            @*<input name="Status" type="text" class="form-control" />*@
        </div>
    </div>
</div>

更新編輯視圖

打開展示層(即JD.CRS.Web.Mvc)的Views/Course/_EditCourseModal.cshtml //Course編輯視圖

添加下拉框Status //以替代輸入框Status

<div class="row clearfix">
    <div class="col-sm-12">
        <div class="form-line">
            <label class="form-label">@L("Status")</label>
            @Html.DropDownListFor(
            model => model.Status,
            Model.GetStatusList(LocalizationManager),
            new
            {
                @class = "form-control",
                id = "Status"
            })
            @*<input name="Status" type="text" value="@Model.Course.Status" class="form-control" />*@
        </div>
    </div>
</div>

更新腳本

打開展示層(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\_EditCourseModal.js //用以存放Course編輯相關腳本

在初始化Form時給下拉框傳值

//Initial form
_$modal.on('shown.bs.modal', function () {
    _$form.find('input[type=text]:first').focus();//focus first input
    _$status.val() = status;//Status value
});

預覽效果

創建課程

 

編輯課程

 


您的分享是我們最大的動力!

更多相關文章
  • 點這裡進入ABP進階教程目錄 在功能按鈕區增加一個自定義按鈕 - Add(創建課程) 添加按鈕 打開展示層(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Course查詢相關腳本 自帶按鈕已有五個我們再添加一 ...
  • 簡述 我們做軟體工作的雖然每天都離不開網路,可網路協議細節卻不是每個人都會接觸和深入瞭解。我今天就來和大家一起學習下Socket,並寫一個簡單的聊天程式。 一些基礎類 首先我們每天打開瀏覽器訪問網頁信息都是使用的HTTP/HTTPS協議,而HTTP是通過的TCP建立的連接。TCP底層又是通過的Soc ...
  • 關鍵字:流程未來節點處理人 工作流快速開發平臺 工作流流設計 業務流程管理 asp.net 開源工作流 業務背景:一個流程在啟動起來後,是可以對一些節點計算出來處理人是誰,流程的走向。對於另外一些節點處理人有可能需要相關的人員調整的。在一些審批的環境下,需要把能夠計算出來的節點處理人在發起時計算出來... ...
  • 一、背景 代碼實例:https://gitee.com/D_C_L/CurtainEtcAOP.git我們實際系統中有很多操作,是不管做多少次,都應該產生一樣的效果或返回一樣的結果。 例如: 1. 前端重覆提交選中的數據,應該後臺只產生對應這個數據的一個反應結果。 2. 我們發起一筆付款請求,應該只 ...
  • 點這裡進入ABP進階教程目錄 效果預覽 至此,ABP進階教程的查詢/分頁/排序/導出/列印示例已完成,效果如下 登錄 首頁 辦公室信息 院系信息 課程信息 教職員信息 學生信息 新增 修改 刪除 查詢 複製 導出 列印 敬請期待下一個系列. ...
一周排行
  • 場景 在Winfom中可以在頁面上多個按鈕或者右鍵的點擊事件中觸發同一個自定義的委托事件。 實現 在位置一按鈕點擊事件中觸發 string parentPath = System.IO.Directory.GetParent("指定路徑").ToString(); //獲取指定路徑的父級目錄並作為參 ...
  • asp.net 根據html模板導出excel public class ExcelHelper { /// <summary> /// 根據html模板文件生成excel文件 /// </summary> /// <param name="ds">數據源</param> /// <param na ...
  • asp.net 使用NPOI讀取excel文件內容 NPOI下載地址:NPOI public class ExcelHelper { /// <summary> /// 讀取Excel文件數據到DataSet,一個Sheet對應一個DataTable /// </summary> /// <para ...
  • 場景 使用Visual Studio 開發Winform程式,使用SVN進行項目版本管理。 在添加引用時,會出現在A電腦中添加了絕對路徑的引用,在B電腦中就會出現找不到 並且將此引用標識為?的狀態。 註: 博客主頁: https://blog.csdn.net/badao_liumang_qizhi ...
  • asp.net 使用 Application 限制單一登錄 原理:用戶登錄後系統會分配一個與用戶唯一對應的SessionID,將當前用戶ID與其SessionID對應保存在Application中,一旦該用戶在其他地方重覆登錄則Application中保存的SessionID就會被更新,導致當前se ...
  • 當我們的系統時間不正常,比如設置一個日期-1999年9月9日,會引發證書問題。 系統時間不正常-IE有概率能訪問 觸發NavigateError事件,異常代碼INET_E_INVALID_CERTIFICATE -- 這是一個必要不充分條件,系統時間不正常時IE有相關證書異常,更新時間能解決此類異常 ...
  • //加密 public static string GDEncode(string data, string Key) { Key = "12345678"; byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(Key); byte[] b ...
  • static void CopyFiles() { string sourceDir = @"D:\C\ll"; string destDir = @"D:\LL"; if (!Directory.Exists(destDir)) { Directo... ...
  • //接收的為空時,則表示客戶端下線,跳出迴圈 if (r == 0) { break; }; string str = Encoding.UTF8.GetString(buffer, 0, r); //RemoteEndPoint:可以得到遠程客戶端的IP和埠號。 ShowMsg(socketSe... ...
  • 本文梯子 前言 1、.net core 框架性能測試 2、.net core 執行過程 3、中間件執行過程 4、AOP切麵 5、整體框架結構與資料庫表UML 一、創建第一個Core 1、SDK 安裝 2、新建項目 2、新建項目(3.0SDK) 3、項目整體結構分析 二、重要文件說明 1、Progra ...
x