ASP.NET MVC£ºÈçºÎʵÏÖÒ»¸ö×Ô¼ºµÄModelBinder£¿
»·¾³£º
Windows 2008, VS 2008 SP1, Asp.Net Mvc RC1
------------------------------------------------------------------------------
ÉÏÎÄ£ºAsp.Net Mvc: Model Binding »úÖÆ·ÖÎö ÖУ¬ÎÒÃǼòµ¥·ÖÎöÁËAsp.Net MvcÖÐModel BindingµÄ¹ý³Ì£¬·Ç³£´Ö²Ú£¬±¾ÎĽ«Ì½Ë÷ÈçºÎʵÏÖÒ»¸ö×Ô¼ºµÄModelBinder£¬²¢½øÒ»²½Õ¹Ê¾Ç°ÎĺöÂÔµÄÈô¸Éϸ½Ú¡£
¼ÙÉ裬ÎÒÃÇÏÖÔÚÓÐÒ»¸öBookÀ࣬
ÏÖÔÚÎÒÃÇҪʵÏÖÌí¼ÓBookµÄ¹¦ÄÜ£¬Òò´Ë£¬Ð½¨Ò»¸öBookController£¬²¢ÇÒ¼ÓÈëÒ»¸öAction:
½¨Á¢ÏàÓ¦µÄView£º
Æäʵ£¬µ½ÕâÒ»²½£¬µ±ÎÒÃÇÌá½»±íµ¥µÄʱºò£¬ÔÚActionÀïÃæÒѾ¿ÉÒÔ»ñµÃBook×Ô¶¯°ó¶¨£¬Õâ¹é¹¦ÓÚÄÚ½¨µÄDefaultModelBinder¡£µ«ÊÇ£¬ÎÒÃÇ»ùÓÚijÖÖ¿¼ÂÇ£¬ÏëҪʹÓÃ×Ô¼º´´½¨µÄModelBinder¡£ÓÚÊÇ£¬ÎÒÃǽÓ×Å´´½¨Ò»¸öSimpleModelBinderÀ࣬¸ÃÀàʵÏÖÁËIModelBinder½Ó¿Ú£¨×Ô¶¨ÒåµÄModelBinder±ØÐëʵÏÖÕâ¸ö½Ó¿Ú£©¡£
IModelBinderÖ»ÓÐÒ»¸ö·½·¨BindModel()£¬Õâ¸ö·½·¨½ÓÊÜÁ½¸ö²ÎÊý£ºControllerContext, ModelBindingContext£¬Òò´Ë£¬ÎÒÃÇÔÚʵÏÖÕâ¸ö·½·¨µÄʱºò£¬±ãÐèÒªºÃºÃÀûÓÃÕâÁ½¸ö²ÎÊý°üº¬µÄÐÅÏ¢¡£
ÏÖÔÚÀ´¿´SimpleModelBinderµÄ¾ßÌåʵÏÖ£º
ÉÏÃæ£¬ÎÒ¾¡Á¿±ÜÃâÓ²±àÂ룬ÒòΪÎÒÏ£ÍûÕâ¸öSimpleModelBinder¾ßÓÐÒ»¶¨µÄͨÓÃÐÔ¡£´ËÍâÒ²±ÜÃâModel×Ö¶ÎÃû³Æ¸ü¸ÄµÄÁ¬Ëø·´Ó¦¡£ÕâÀÎÒÃÇͨ¹ýbindingContext.ModelTypeÀ´´´½¨Ò»¸öModelʵÀý£¬Í¨¹ýTypeDescriptorÀ´»ñÈ¡ModelµÄProperty¼¯ºÏ£¬Í¨¹ýbindingContext.ValueProviderÀ´È¡µÃRequestµÄ±íµ¥ÐÅÏ¢£¬×îºó·µ»ØÒ»¸öModelʵÀý¡£
ÕâÑù£¬ÎÒÃǵÄSimpleModelBinder¾Í´´½¨ÍêÁË¡£ÄÇô£¬ÈçºÎÈÃËü¿ªÊ¼¹¤×÷ÄØ£¿
ÓÚÊǾÍÒý³öÒ»¸öÎÊÌ⣺Asp.Net MvcÈçºÎÈ·¶¨µ±Ç°ÐèÒªÓ¦ÓÃÄĸöModelBinder£¿
´ð°¸ÊÇ£º°´ÏȺó˳Ðò£º(1)Action·½·¨ÖÐModelµÄ²ÎÊýµÄAttribute£¬(2) ModelBinders.Binders×ֵ䣬(3) ModelÀàµÄAttribute£¬(4) DefaultModelBinder
Ò²¾ÍÊÇ˵£¬ÎÒÃÇÓÐ(1)(2)(3)ÈýÖÖ·½·¨À´¸æËßAsp.Net Mvcµ±Ç°ÎÒÃÇÆÚÍûÓ¦ÓÃÄĸöModelBinderµ½ÄĸöModel¡£
(1) ÔÚActionµÄModel²ÎÊýÉϼÓAttribute:
(2) ½«SimpleModelBinderÌí¼Óµ½ModelBinders.Binders×ÖµäÖУº
(3) ÔÚBookÀඨÒåʱ¼ÓÉÏAttribute£º
ºÃÀ²£¬Èý¸ö·½·¨ÈÎÓÉÄãÑ¡Ôñ¡£
ÕâÀÎÒÃÇ´´½¨ÁËÒ»¸öºÜ¼òµ¥µÄ×Ô¶¨ÒåµÄModelBinder£¬µ«ÄãÊÇ·ñÖªµÀËüÖÁÉÙ»¹È±Ê§ÁËÒ»¸öºÜÖØÒªµÄ¹¦ÄÜ£¬¾ÍÊǰó¶¨Ê±¶ÔModelµÄPropertyµÄ¹ýÂË£¬ÒòΪһֱÒÔÀ´ÎÒ¶¼°ÑBindAttributeÕâ¸ö³ÉÔ±¸øºöÊÓÁË¡£ÏÂÆª£¬ÎÒÃǾÍÀ´Ì¸Ì¸BindAttribute£¬²¢¶ÔSimpleModelBinder×öÉÔÉÔµ
Ïà¹ØÎĵµ£º
ʲôÊÇÓû§¿Ø¼þ£¨User Control£©£¿
Óû§¿Ø¼þÆäʵ¾ÍÊÇÒ»ÖÖ×Ô¶¨ÒåµÄ×éºÏ¿Ø¼þ£¬Í¨³£ÓÉϵͳÌṩµÄ¿ÉÊÓ»¯¿Ø¼þ×éºÏ¶ø³É£¬
Óû§¿Ø¼þÖв»½ö¿ÉÒÔ¶¨ÒåÏÔÊ¾Ò³Ãæ£¬»¹¿ÉÒÔ±àдʼþ´¦Àí´úÂë¡£µ±¶à¸öÍøÒ³ÖаüÀ¨
Óв¿·ÖÏàͬµÄÓû§½çÃæÊ±£¬¿ÉÒÔ½«ÕâЩÄÚÈÝÏàͬµÄ²¿·ÖÌáÈ¡³öÀ´£¬×ö³ÉÓû§¿Ø¼þ¡£
HttpHandler:ÊÂʵÉÏ£¬µ±Ò»¸öHTTPÇëÇóµ½´ïHttp ......
¶ÏµãÐø´«µÄÔÀí
ÔÚÁ˽âHTTP¶ÏµãÐø´«µÄÔÀí֮ǰ£¬ÏÈÀ´ËµËµHTTPÐÒ飬HTTPÐÒéÊÇÒ»ÖÖ»ùÓÚtcpµÄ¼òµ¥ÐÒ飬·ÖΪÇëÇóºÍ»Ø¸´Á½ÖÖ¡£ÇëÇóÐÒéÊÇÓɿͻ§»ú(ä¯ÀÀÆ÷)Ïò·þÎñÆ÷(WEB SERVER)Ìá½»ÇëÇóʱ·¢Ëͱ¨ÎĵÄÐÒé¡£»Ø¸´ÐÒéÊÇÓÉ·þÎñÆ÷(web server)£¬Ïò¿Í»§»ú(ä¯ÀÀÆ÷)»Ø¸´±¨ÎÄʱµÄÐÒé¡£ÇëÇóºÍ»Ø¸´ÐÒé¶¼ÓÉÍ·ºÍÌå×é³É¡£Í·ºÍÌåÖ® ......
ʵÏÖ URL ÖØÐ´
¿ÉÒÔʹÓà ISAPI ɸѡÆ÷ÔÚ IIS Web ·þÎñÆ÷¼¶±ðʵÏÖ URL ÖØÐ´£¬Ò²¿ÉÒÔʹÓà HTTP Ä£¿é»ò HTTP ´¦Àí³ÌÐòÔÚ ASP.NET ¼¶±ðʵÏÖ URL ÖØÐ´¡£±¾ÎÄÖØµã½éÉÜÈçºÎʹÓà ASP.NET ʵÏÖ URL ÖØÐ´£¬Òò´ËÎÒÃǽ«²»¶ÔʹÓà ISAPI ɸѡÆ÷ʵÏÖ URL ÖØÐ´µÄϸ½Ú½øÐÐÉîÈë̽ÌÖ¡£µ«ÊÇ£¬ÓдóÁ¿µÄµÚÈý·½ ISAPI ɸѡÆ÷¿ÉÓÃÓÚ URL ÖØÐ´£¬ÀýÈ ......
Õª³Ç°±²ÃǵÄ
ÆäʵҪʵÏÖÕâ¸ö¹¦ÄÜÖ÷Òª»¹ÊÇÒªÓõ½javascript
·½·¨Ò»£º
ÔÚasp.netµÄaspxÀïÃæµÄÔ´´úÂëÖÐ
<input type="button onclick="javascript:window.history.go(-1);"value="·µ»ØÉÏÒ»Ò³">
dzÎö£ºÕâ¸öÊÇÓÃÁËHTML¿Ø¼þ£¬Í¨¹ýÒ»¸öonclickµÄʼþ£¬µ÷ÓÃÁËjavascriptÖеÄÒ»¸ö·½·¨¾Í¿ÉÒÔÁË¡£Õâ¸öÊÇ×î¼òµ¥µÄÁË£¬Ò²Í¬Ñù ......