核心思路是使用Region的求交集和並集的結果與原始Region對比 Winform項目自帶這個類庫,如果使用控制台,需要先在nuget安裝System.Drawing.Common /// <summary> /// 計算兩個形狀的關係 /// </summary> /// <param name ...
入門實戰-在頁面中增加下拉框、覆選框功能的增加和修改
一個標準的表單應用頁面(視圖),有很多元素,文本框只是有的多一些,還有覆選框,下拉框,單選鈕等各種元素,本節我將講述使用asp.net core編程實現下拉框的操作和應用,演練代碼還以Menu菜單管理有例,在視圖內增加下拉框,覆選框,實現數據的增加和編輯功能。可以通過枚舉或者靜態代碼實現下拉框select選擇,但本節講解從資料庫拉取數據填充下拉框。
1.增加下拉框:在Controller文件夾下的MenuController內,在Action中修改Create的方法代碼增;在HttpGet類型的Create中初始化下拉框,在HttpPost類型的Create中獲取下拉框值並保存,同時重置下拉框,否則,保存後,下拉框將會報錯或只有預設的一項,除非你action到另外的頁面。
(1).Action的修改。
(2).View的修改
(3).預覽效果
2.修改下拉框:在MenuController文件內,修改Action視圖Edit增加下拉框
(1).先修改一下Action,主要是下拉框的賦值並選中的問題
(2).View頁面不用做任何修改,編輯時選中那一項,在HttpGet類型的Edit中,已經在生成綁定select的ViewData[“MenuDrop”]時設定,當對象的ParentId與表中存儲的ParentId相等設置Selected=true;
(3).HttpPost類型的Edit是保存編輯後的值賦值保存即可;
以上對下拉框的操作只適應於一級菜單情況(就是單純的一個類別欄位),如果下拉框是二級菜單操作,需要用到級聯操作。
3.二級級聯下拉框的代碼編寫
原則上二級和以上的多級級聯下拉框最好是多個表設計,例如省市區這種三個下拉框的選擇,面向對象設計時,各自表單獨設計在使用類對象時就方便一下,把欄位設計到一個表中,那麼使用Sql語句取值方便,但不符合Asp.Net Core 或者新的Web編程模式;下麵演練下我實現的二級下拉框(編輯功能沒有實現)
(1).在View視圖中,修改Create.cshtml文件,在原來父菜單行位置,以如下方式添加2個DropDownList;
(2).在View視圖中,Create.Cshtml文件中,增加Js代碼,需要引用Jquery,註意js代碼中的op.text=j.text和op.value=j.value的大小寫,如下
(3).在Controller中的MenuController.cs文件中,修改action,和增加個方法,如下圖
(4).最後預覽效果
4.關於菜單管理功能的處理方式。
添加系統菜單的處理方式有這樣一種處理方式,列表之上新建按鈕[添加],用來實現增加根目錄菜單,然後在每個子目錄行上,添加一個Add 實現該菜單下的子菜單添加,如下圖示:
這樣處理邏輯清楚一些,正好避開了下拉框問題。當然還是要掌握下拉框的功能編碼,以後的業務邏輯總是要遇到。
5.覆選框的使用
在前面講刪除和查詢的章節中,有批量刪除的例子,裡面的覆選框使用都是在前臺代碼Js中實現操作。我們在菜單修改中,嘗試增加覆選框來。
(1).單一使用,在Menu管理的View視圖的Create.cshtml中,增加一個覆選框,因為對應Menu數據表的IsDisplay欄位,為bool類型。
(2).執行Action保存數據是,獲取到的值(如果選中,則是True,如果不選,則是False)
(3).在編輯頁面(Edit.cshtml)視圖中,從對象判斷,如果是True,則是選中,如果是False,則是非選中,展現完數據後,你在進行編輯,Edit的Action的代碼與Create中的類似,不在演練提出。
6.覆選框另外一種用法代碼編寫。我貼出關鍵代碼,在文章管理中會有詳細的代碼。
(1).在Create視圖的代碼片段
(2).在Edit時的代碼片段