愛上MVC3 為下拉列表框新增乙個自定義驗證規則

2021-09-06 13:07:45 字數 1854 閱讀 7855

回到目錄

之前的同事,也是我的哥們,問我下拉列表框是否可以支援驗證,這個問題看似簡單,但確實mvc裡有為我們提供,所以,只能自己寫個擴充套件了,即自己寫乙個attribute特性,讓它繼承validationattribute,使它可以與其它mvc提供的驗證一起使用.

在mvc的特性驗證,很方便,很直接,它無論是在資料安全性上還是在頁面表現上都做的不錯,它的執行機制是這樣的,前台表單驗證規則有個名稱,然後前台js有對這個規則編寫的**,用來控制前台html標記的顯示,而後台主要是生成驗證規則和向前臺引數賦值的。事實上,我們要知道的是,mvc驗證不是簡單的後台驗證,它還有對前台頁面的控制的js部分,它一般被繼承到了jquery.validate.min.js裡了,如果我們要是自己開發一套驗證規則,也需要自己的js庫與相配合。

c#部分:

[attributeusage(attributetargets.property | attributetargets.field | attributetargets.parameter, allowmultiple = false

)]

public

sealed

class

notdefaultvalueattribute : validationattribute, iclientvalidatable

public

notdefaultvalueattribute()

public ienumerablegetclientvalidationrules(modelmetadata metadata, controllercontext context)

;rule.validationparameters[

"inputstring

"] =inputstring;

yield

return

rule;

}public

override

bool isvalid(object

value)

return

true

; }

}

為viewmodel新增特性

public

class

testmodel

[required]

[datatype(datatype.password)]

[display(name = "密碼"

)]

public

string password

[display(name = "愛好"

)] [notdefaultvalue(inputstring = "1"

)]/*如果使用者選擇為1,則驗證不通過*/

public ienumerableliker

}

在前面新增相對應的js**,建議將自定義的js庫放在乙個單獨的檔案裡,這樣擴充套件性更強一些。

$.validator.addmethod('

notdefaultvalue

', function (value, element, param)

if (value.indexof(param) != -1

)

else

});$.validator.unobtrusive.adapters.addsingleval(

'notdefaultvalue

', '

inputstring

');

ok,現在就可以執行我們的程式了,看看效果吧

怎麼樣,像這種擴充套件,我們還可以寫很多,舉一反三吧,呵呵!

回到目錄

ios 為程式新增乙個懸浮框

一 uiwindow的簡介 2.ios程式啟動完畢後,建立的第乙個檢視控制項就是uiwindow,接著建立控制器的view,最後將控制器的view新增到uiwindow上,於是控制器的view就顯示在螢幕上了 3.乙個ios程式之所以能顯示到螢幕上,完全是因為它有uiwindow。也就說,沒有uiw...

跟小靜學MVC3 01 建立第乙個MVC3專案

要想掌握一種開發框架,光靠眼睛看是不夠的,一定要動手使用,才能快速熟悉起來。現在就從建立mvc3專案開始,一步步了解mvc專案的基本結構和開發流程。在webform開發方式裡,url是和aspx檔案所在的目錄相對應的,但在mvc結構中,請求是通過controller進行處理的。在asp.net mv...

跟小靜學MVC3 01 建立第乙個MVC3專案

要想掌握一種開發框架,光靠眼睛看是不夠的,一定要動手使用,才能快速熟悉起來。現在就從建立mvc3專案開始,一步步了解mvc專案的基本結構和開發流程。在webform開發方式裡,url是和aspx檔案所在的目錄相對應的,但在mvc結構中,請求是通過controller進行處理的。在asp.net mv...