關於在MVC中生成下拉框的各種場景應用c

2021-07-15 09:56:41 字數 2522 閱讀 2522

在建設**當中,生成下拉框本來是一件非常微不足道的事,但是在實際應用當中,我常常會碰到這樣的乙個場景:

剛開始設計時僅固定為幾個下拉選項,但是經過幾次迭代和需求更改之後,這個下拉選項會不斷地被要求改來改去。

當然,我們希望這個下拉框是動態讀取資料庫中的資料,並實現動態的後台視覺化管理,但有些場景下並不會提供一張表資料。

所以在一次開發中,我突然冒出乙個想法。借用類似dictionary的鍵值對映關係,因為下拉框元素也剛好可以看成這樣的鍵-值對的形式。

所以我自定義了乙個對映的類如下:

public class mapentity

/// /// 值

///

public string value

/// /// 是否啟用

///

public bool enable

#endregion

#region 構造方法

/// /// 預設

///

public mapentity()

/// /// 建構函式

///

/// 主鍵

/// 值

/// 是否啟用標誌, 預設啟用

public mapentity(long key, string value, bool enable = true)

#endregion

}

public enum activestatusenum : int

然後寫乙個輔助類,封裝 方法:

public class maphelper

;#region 生成下拉框元素集合

/// /// 生成下拉框元素集合

///

///

///

///

///

public static listgetdropdownlist(mapentity fillarray, long pid, bool isneedall = false )

foreach (var item in fillarray) //遍歷陣列元素生成下拉框

if (isneedall) //是否需要插入全部選項

return returnobj;

}#endregion

#region 通過

/// /// 通過鍵 獲取對映值

///

/// 集合物件

/// 指定鍵

/// 是否忽略"是否啟用"選項,預設否

/// }}

return string.empty;

}/// /// 通過鍵 獲取對映值

///

/// 集合物件

/// 值

/// 是否忽略"是否啟用"選項,預設否

/// 是否忽略大小寫,預設否

/// 如果集合中的鍵存在-999,則不適合此方法

foreach (var item in fillarray)}}

else}}

}return -999;

}#endregion

}

最後呼叫時,如下:

public class homecontroller : controller

}

所以在下次進行變更的時候,只需要設定enabled屬性,可以設定啟用或者不啟用,也可以隨時新增新的選項。這樣非常的靈活方便。

當然,這裡其實可以有另外的一種方法,那就是通過反射機制。**如下:

/// /// 

///

/// 列舉物件的型別

/// 指定的列舉名稱

/// 是否需要新增全部選項

///

public static listgetdropdownlist(type enumtype, string pid, bool isneedall = false)

selobj.value = memberitem.name;

selobj.selected = isfind = memberitem.name.equals(pid);

resultobj.add(selobj);

}if (isneedall)

}return resultobj;

}

在呼叫時,只需要傳入如下引數示例:

viewdata["ddlist2"] = maphelper.getdropdownlist(typeof(activestatusenum), activestatusenum.unaudit.tostring());

雖然反射機制也是可以實現,但是卻少了一些控制上的靈活性以及多了一些效能上的損耗,相比之下,自定義的對映類,可以自定義屬性控制開關,新增額外的資訊等等。

這只是在寫**過程中一些小的思考,希望自己能有更多的這樣的思考,積少成多!加油!

dorado關於下拉框的的onSelect()方法

關於dorado中下拉框的onselect方法此方法有三個引數onselcet dropdown selectobject editor 其中selectobject 是在下拉框中選中記錄,editor是下拉框所在的autoform。通過var sobj selectedobject 可以獲取到選中...

關於Vue iview的簡單下拉框滾動載入

話不多說,直接上 作用是下拉框內容無限滾動載入 html position relative label 使用者名稱 prop username formvalidate.username disabled usenamedisable placeholder 請輸入使用者名稱 on blur cl...

java動態生成帶下拉框的Excel匯入模板

在實際開發中,由於業務需要,常常需要進行excel匯入匯出操作。以前做一些簡單的匯入時,先準備乙個模板,再進行匯入,單有十幾 二十幾個匯入模板時,往往要做十幾 二十幾個模板。而且,當在模板中需要有下拉框,而且下拉資料要實時查詢時,這樣的方法就不太好了 現在,做成了動態生成匯入模板,只要引數傳對了,就...