我有一個IEnumerable類型的詳細信息視圖。該視圖帶有一堆下拉菜單,可讓您將濾鏡添加到呈現的記錄列表中。使用MVC模型作爲存儲庫中的過濾器
所有這些下拉菜單對應MVC模型屬性:
public class Record
{
public string CustomerNumber { get; set; }
public string CustomerName { get; set; }
public string LineOfBusiness{ get; set; }
public DateTime? Date { get; set; }
}
現在,我用我的模型,我的DTO洗牌我的控制器和我的回購之間的數據。由於我所有的下拉式過濾器都代表模型屬性,因此我將模型傳遞給回購檢索方法,檢查其屬性並根據其值進行過濾?換句話說:
public IEnumerable<TradeSpendRecord> Get(TradeSpendRecord record)
{
IQueryable<tblTradeSpend> query = _context.tblRecords;
if (!String.IsNullOrEmpty(record.CustomerName))
query = query.Where(x => x.CustomerNumber == record.CustomerNumber);
if (!String.IsNullOrEmpty(record.LineOfBusiness))
query = query.Where(r => r.LOB == record.LineOfBusiness);
SNIP
希望這不是太主觀,但我想知道如果任何人有關於這是否是一個好/壞的做法任何輸入。我還沒有看到很多像我需要做的動態過濾的例子,並且正在尋找一些指導。
感謝,
克里斯
這將mvc項目綁定到不理想的dal,我會選擇使用參數或實體項目,其中在dal和mvc項目中使用的實體都保留下來。這些可以形成兩層之間的接口 – Slicksim 2013-03-27 16:27:09
我實際上養成了將我的模型分解爲單獨項目的習慣,正如我所說的,我傾向於將它們用作DTO來在圖層之間移動數據,並在我的MVC中使用ViewModels項目向視圖提供特定數據。 – 2013-03-27 16:31:39
只要它正是你所需要的,這裏沒什麼錯。在你的情況下,你只能查詢一個屬性,而不能查詢它們的組合。如果您想同時搜索客戶名稱和業務線,該怎麼辦?但是你的代碼只會按業務線進行搜索。 – Kath 2013-03-27 18:20:05