NancyFX 第七章 模型繫結和驗證

2022-07-09 12:36:10 字數 4376 閱讀 8088

任何優秀的框架,都能傳遞引數。在之前的路由章節,我們已經看到了如何在url中傳遞引數。

能夠傳遞簡單的引數當然好,特別是在設計那些從資料庫讀取記錄的api設計中。但是,很多情況下也是需要傳遞複雜物件。

這個可能是登入模組的驗證資訊,或者是資料庫表中的多條記錄。不管怎麼樣,只是傳遞簡單物件已經不能滿足。

這下就該輪到nancy的模板繫結功能起作用了。

如果你之前已經熟悉了asp.net mvc,你應該已經了解了模型繫結是什麼了: 這是乙個根據請求和攜帶的資料去匹配物件變數的

一圖賽千言

namespace

nancybook.models

public

string name

public

string buildingaddress

public

string town

public

string county

public

string postalcode }}

看下這個類,估計您一眼就能想到,我們採用乙個整形數字代表記錄,每條記錄都是由五個屬性構成了位址資訊。   

當前臺通過ajax向後台提交表單或傳遞json物件時,就能獲得其中的五個屬性:

正如你在上圖中看到的,你可以在web表單中傳送乙個複雜物件,每個表單元素的名字和數值會一起拼接為乙個字串。這也適用於傳送json或xml格式的資料。

模型繫結的任務就是把傳遞的字串匹配到物件的屬性上。

如果只是傳遞了部分字段,其他字段仍然是預設值。

乙個小例子

讓我們建立乙個用於存放檢視的資料夾address,然後在其中新增乙個叫index.html的html檔案,**如下:

"en

">class="

container

">

class="

page-header

">

class="

lead

">please fill in the form below and click '

send data

'to perform a data bind to the post action.

"recordid

" name="

recordid

" type="

hidden

" value="

1"/>

class="

form-group

">

for="

name

">name

"text

"class="

form-control

" id="

name

" name="

name

"placeholder="

enter persons name here

"/>

class="

form-group

">

for="

buildingaddress

">building address

"text

"class="

form-control

" id="

buildingaddress

"name="

buildingaddress

" placeholder="

enter building address here

" />

class="

form-group

">

for="

town

">town

"text

"class="

form-control

" id="

town

" name="

town

"placeholder="

enter town here

" />

class="

form-group

">

for="

county

">county

"text

"class="

form-control

" id="

county

" name="

county

"placeholder="

enter county here

" />

class="

form-group

">

for="

postalcode

">postal code

"text

"class="

form-control

" id="

postalcode

"name="

postalcode

" placeholder="

enter postal code here

" />46"

submit

"class="

btn btn-primary

">send data

在模組資料夾中新增乙個類檔案 addressroutes.cs,**如下:

由三種不同的繫結方式,比較典型的如下:

address myaddress = this.bind();
還有採用var ,並輸入泛型的

var myaddress = this.bind();
最後,如果已經建立模型的物件,還可以這樣:

var myaddress = this.bindto(existingmodelinstance);
就我個人而言,我更傾向於第二種。

擴充套件你的模組類,新增儲存的處理,**如下:

using

nancybook.models;

using

nancy;

using

nancy.modelbinding;

namespace

nancybook.modules;}}}

然後再新增乙個視**件 display.html

繫結列表和陣列

驗證

總結

第七章 模型評估

分類模型評估 二分類 標註分類只有兩類的分類,乙個類叫做二分類的正類,用1表示 另個一類叫做二分類的負類,用0表示。一般來說,正類是我們比較關注的類,比如 員工是否離職 離職的叫做正類,不離職的叫做負類。注 有的時候0和1不是直接得到的,而是我們得到了乙個資料在經過模型輸出後,劃分為正類的概率,如果...

python第七章 python教程(第七章)

字典和集合 字典是python中唯一,乙個對映型別 如何建立乙個字典,如下 dict dict 滲透 網路安全 怎麼理解字典呢?現實生活中的字典可以通過首字母進行查詢要查詢的漢子,python也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...

第七章 函式

1.ansi c 允許函式原型的使用,函式宣告提供給編譯器和之後的呼叫函式返回值型別,引數型別和數量的資訊,而k c用單獨的列表給出引數的型別,編譯器只記住函式的返回值型別,但不儲存函式的引數數量和型別 2.沒有return語句的函式,隱式的返回 3.函式的原型可以單獨放於乙個標頭檔案中,一定要具有...