2009-07-21 132 views
3

在asp.net MVC我有我的控制器中的搜索行動,我試圖決定我是否應該通過查詢到我的倉庫作爲一個字符串asp.net MVC:將查詢字符串作爲字符串或單個參數傳遞?

public ActionResult Search(string query) 
{ 
    return View(_repository.ListPeople(query)); 
} 

或作爲單獨的參數:

public ActionResult Search(string FirstName, string LastName, System.Nullable<byte> Education) 
{ 
    return View(_repository.ListPeople(FirstName, LastName, Education)); 
} 

我在網上看到的很多例子都使用查詢字符串方法,但對我來說它並不感覺「安全」,儘管當你有一堆參數傳入時它會更容易處理。關於更好的方法來達成共識?

回答

2

我喜歡模型綁定。這樣,如果您決定添加額外的搜索選項,除了模型類別外,您沒有任何更改。

信息herehere

+0

這似乎是最乾淨的方法,我在別處使用模型綁定我不太確定爲什麼我不認爲在這種情況下使用它。謝謝! – 2009-07-21 17:19:33

1

我都肯定會建議與第二條路線去。沒有必要將您的控制器與您的存儲庫連接起來。讓您的存儲庫負責獲取數據,它不應該對查詢字符串進行任何類型的解析。這不是它的工作。讓控制者處理。

2

個人而言,我更喜歡沒有存儲庫承擔解析查詢字符串的責任。從關注點分離的角度來看,我認爲存儲庫應該保持與實現無關。例如,爲單元測試創​​建查詢字符串比直接使用參數調用方法更麻煩。這就是說,我也更喜歡將控制器與界定明確的服務接口,因爲它有助於保持控制器更輕,以我的經驗。我嘗試讓服務充當存儲庫的入口,雖然沒有要求這樣做。根據調用的目的是什麼,我將傳入一個存儲庫(或者更可能是服務)有兩件事 - 一組參數,就像您在第二個示例中給出的那樣,或者作爲構造的域對象,如果適用。

相關問題