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×öÉÔÉÔµ
Ïà¹ØÎĵµ£º
¡¡¡¡1.1 ʲôÊÇASP.net
¡¡¡¡ASP.net ÊÇÒ»ÖÖ½¨Á¢ÔÚͨÓÃÓïÑÔÉϵijÌÐò¹¹¼Ü£¬Äܱ»ÓÃÓÚһ̨Web·þÎñÆ÷À´½¨Á¢Ç¿´óµÄWebÓ¦ÓóÌÐò¡£ASP.netÌṩÐí¶à±ÈÏÖÔÚµÄWeb¿ª·¢Ä£Ê½Ç¿´óµÄµÄÓÅÊÆ¡£
¡¡¡¡Ö´ÐÐЧÂʵĴó·ùÌá¸ß
¡¡¡¡ASP.netÊÇ°Ñ»ùÓÚͨÓÃÓïÑԵijÌÐòÔÚ·þÎñÆ÷ÉÏÔËÐС£²»ÏñÒÔÇ°µÄASP¼´Ê±½âÊͳÌÐò£¬¶øÊǽ«³ÌÐòÔÚ·þÎñÆ÷¶ËÊ×´ÎÔËÐÐʱ½øÐ ......
AutoPostBackÄÄÈ¥ÁË?
´ÓǰʹÓÃweb
Form¿ª·¢µÄ³ÌÐòÔ±¾³£»áÎʵ½AutoPostBackÅÜÄÄÈ¥ÁË£¿Ê¹ÓÃIDE£¬²¢ÇÒÔÚAutoPostBack´ò¸ö¹´ÊǷdz£ÈÝÒ׵ġ£¶øÕýÊÇÒòΪÈÝÒ×ʹ
Óã¬ËùÒÔ´ó¶à¿ª·¢ÈËÔ±²»»áÈ¥ÏëAutoPostBackÊÇÔõÑùµÄ»úÖÆ¡£Êµ¼ÊÉÏ£¬Èç¹ûÄãÑ¡ÔñAutoPostBack£¬ÔòDropDownList»á±»Ìí¼Ó
Ò»¸öÒý·¢javascriptʼþµÄonchangeÊôÐÔ£¬µ¼ÖÂD ......
ÒòΪ¹«Ë¾µÄ²úÆ·ÓÃasp¿ª·¢£¬ Ç°Ò»¶Îʱ¼äÓÃaspдÁËÒ»¸öÉú³É¾²Ì¬Ò³Ãæ²¢·ÖÒ³µÄ³ÌÐò£¬µ«ÔµÓÚ¶Ô.netµÄÈÈ°®£¬Ð´ÁËÕâ¸ö.netϵÄÉú³É¾²Ì¬Ò³Ãæ²¢·ÖÒ³µÄ³ÌÐò¡£
Ö÷ÒªµÄÔÀí¾ÍÊÇÌ滻ģ°åÀïµÄÌØÊâ×Ö·û¡£
1¡¢¾²Ì¬Ä£°åÒ³Ãæ template.html£¬Ö÷ÒªÊǶ¨ÒåÁËһЩÌØÊâ×Ö·û£¬ÓÃÀ´±»Ìæ»»¡£
<!DOCTYPE HTML PUBLIC "-//W3C//DTD ......
ʵÏÖ URL ÖØд
¿ÉÒÔʹÓà ISAPI ɸѡÆ÷ÔÚ IIS Web ·þÎñÆ÷¼¶±ðʵÏÖ URL ÖØд£¬Ò²¿ÉÒÔʹÓà HTTP Ä£¿é»ò HTTP ´¦Àí³ÌÐòÔÚ ASP.NET ¼¶±ðʵÏÖ URL ÖØд¡£±¾ÎÄÖصã½éÉÜÈçºÎʹÓà ASP.NET ʵÏÖ URL ÖØд£¬Òò´ËÎÒÃǽ«²»¶ÔʹÓà ISAPI ɸѡÆ÷ʵÏÖ URL ÖØдµÄϸ½Ú½øÐÐÉîÈë̽ÌÖ¡£µ«ÊÇ£¬ÓдóÁ¿µÄµÚÈý·½ ISAPI ɸѡÆ÷¿ÉÓÃÓÚ URL ÖØд£¬ÀýÈ ......