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×öÉÔÉÔµ
Ïà¹ØÎĵµ£º
ÔÚWeb±à³Ì¹ý³ÌÖУ¬´æÔÚןܶలȫÒþ»¼¡£±ÈÈçÔÚÒÔÇ°µÄASP°æ±¾ÖУ¬CookieΪ·ÃÎÊÕߺͱà³ÌÕ߶¼ÌṩÁË·½±ã£¬²¢Ã»ÓÐÌṩ¼ÓÃܵŦÄÜ¡£´ò¿ªIEä¯ÀÀÆ÷£¬Ñ¡Ôñ“¹¤¾ß”²Ëµ¥ÀïµÄ“InternetÑ¡Ï¬È»ºóÔÚµ¯³öµÄ¶Ô»°¿òÀïµ¥»÷“ÉèÖÔ°´Å¥£¬Ñ¡Ôñ“²é¿´Îļþ”°´Å¥£¬ÔÚµ¯³öµÄ´°¿ÚÖУ¬¾Í»áÏÔʾӲÅÌÀï ......
asp.netÔÊÐíÉÏ´«µÄÎļþµÄ×î´óΪ4M
Èç¹ûÏëÒª´«¸ü´óµÄÐèÒª¸ü¸Äweb.configÎļþ
<system.web>
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
</ststem.web> ......
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Text;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Sy ......
1¡¢ response.redirect Õâ¸öÌøתҳÃæµÄ·½·¨ÌøתµÄËٶȲ»¿ì£¬ÒòΪËüÒª×ß2¸öÀ´»Ø(2´Îpostback)£¬µ«Ëû¿ÉÒÔÌøתµ½ÈκÎÒ³Ã棬ûÓÐÕ¾µãÒ³ÃæÏÞÖÆ(¼´¿ÉÒÔÓÉÑÅ»¢Ìøµ½ÐÂÀË)£¬Í¬Ê±²»ÄÜÌø¹ýµÇ¼±£»¤¡£µ«ËÙ¶ÈÂýÊÇÆä×î´óȱÏÝ!redirectÌøת»úÖÆ£ºÊ×ÏÈÊÇ·¢ËÍÒ»¸öhttpÇëÇ󵽿ͻ§¶Ë£¬Í¨ÖªÐèÒªÌøתµ½ÐÂÒ³Ã棬Ȼºó¿Í»§¶ËÔÚ·¢ËÍÌøתÇëÇóµ½·þÎñÆ÷¶ ......