asp.net MVC中Action參數(shù)不只是一些基本類(lèi)型,也支持實(shí)體參數(shù)。那么從客戶(hù)端傳來(lái)的數(shù)據(jù)如何映射或轉(zhuǎn)換成實(shí)體對(duì)象呢?就是通過(guò)實(shí)體綁定類(lèi)ModelBinder。此系列類(lèi)在請(qǐng)求轉(zhuǎn)化為后臺(tái)Controller的Action方法前,捕獲傳遞過(guò)來(lái)的數(shù)據(jù),并對(duì)其進(jìn)行解析和轉(zhuǎn)換,最終為實(shí)體類(lèi)對(duì)象。
在系統(tǒng)啟動(dòng)前,Global.asax.cs中的方法Application_Start方法調(diào)用下面代碼定義參數(shù)轉(zhuǎn)換規(guī)則。
//model binders
ModelBinders.Binders.Add(typeof(BaseNopModel), new NopModelBinder());
NopModelBinder繼承DefaultModelBinder承擔(dān)系統(tǒng)的實(shí)體綁定類(lèi),但好像只是留一個(gè)接口,并沒(méi)有使用。主要是繼承父類(lèi)的方法,稍有改變的地方是:方法BindModel添加了對(duì)NopModel的綁定支持。
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var model = base.BindModel(controllerContext, bindingContext);
if (model is BaseNopModel) ((BaseNopModel) model).BindModel(controllerContext, bindingContext);
return model;
}
方法GetModelProperties添加了一個(gè)過(guò)濾方法,只是此方法尚未啟用。
類(lèi)BaseNopModel是所有Model的基類(lèi),支持對(duì)自定義屬性的存儲(chǔ)。并且有一個(gè)綁定到解析器的方法BindModel,只是尚未發(fā)現(xiàn)有子類(lèi)實(shí)現(xiàn)此方法。
您可能感興趣的文章:- NopCommerce架構(gòu)分析之(八)多語(yǔ)言支持
- NopCommerce架構(gòu)分析之(七)主題Theme皮膚管理器
- NopCommerce架構(gòu)分析之(六)自定義RazorViewEngine和WebViewPage
- NopCommerce架構(gòu)分析之(四)基于路由實(shí)現(xiàn)靈活的插件機(jī)制
- NopCommerce架構(gòu)分析之(三)EntityFramework數(shù)據(jù)庫(kù)初試化及數(shù)據(jù)操作
- NopCommerce架構(gòu)分析(一)Autofac依賴(lài)注入類(lèi)生成容器
- 使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 基于nopCommerce的開(kāi)發(fā)框架 附源碼