¡¡¡¡ÎÒÏÖÔÚ±ã¿ÉÒÔ¶ÔTokenizer½øÐгä·ÖµÄµ¥Ôª²âÊÔ£¬ÒÔÈ·±£ËüµÄ¹¦ÄÜÂú×ãÎÒµÄÒªÇó¡£²âÊÔÍê³Éºó£¬ÎҾͶÔËüÍêÈ«·ÅÐÄÁË¡£¶ø´Ëʱ£¬ÎÒµÄSearchCriteriaBinder±ã»áÖ±½ÓʹÓÃTokenizer¶ÔÏ󣬶ø²»ÊÇÄÚ²¿µÄ˽Óз½·¨¡ª¡ªµ±È»£¬ÊÇ»ùÓÚ³éÏóÀ´µÄ£º
public class SearchCriteriaBinder : IModelBinder { public SearchCriteriaBinder() : this(new Tokenizer()) { } internal SearchCriteriaBinder(ITokenizer tokenizer) { this.m_tokenizer = tokenizer; } private readonly ITokenizer m_tokenizer; public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var modelName = bindingContext.ModelName; var rawValue = bindingContext.ValueProvider[modelName].RawValue; var text = HttpUtility.UrlDecode(rawValue.ToString()); var tokenGroups = this.m_tokenizer.Tokenize(text); ... } } |
¡¡¡¡Ô±¾ÓÉ˽ÓеÄTokenize·½·¨¸ºÔðµÄÂß¼£¬ÏÖÔÚÒѾίÍиøITokenzier¶ÔÏóÁË£¬¶øÕâ¸ö¶ÔÏó¿ÉÒÔÔÚ¹¹Ôì SearchCriteriaBinder¶ÔÏóʱͨ¹ý¹¹Ô캯ÊýÌṩ¡£Çë×¢Ò⣬ÌṩITokenizer¶ÔÏóµÄ¹¹Ô캯Êý·ÃÎʼ¶±ðÊÇinternal£¬Ò²¾ÍÊÇ˵£¬Ëü¿ÉÒÔ±»µ¥Ôª²âÊÔ´úÂëËù·ÃÎÊ£¨Í¨¹ýInternalVisibleToAttribute£©£¬µ«ÊÇÎÞ·¨±»ÁíÒ»¸ö³ÌÐò¼¯µÄʹÓ÷½µ÷Óá£Ò²¾ÍÊÇ˵£¬¾¹ýÖع¹µÄSearchCriteriaBinder£¬ËüµÄ¿É²âÊÔÐÔÌáÁË£¬µ«ÊǶÔÍâµÄ±íÏÖȴûÓÐË¿ºÁ±ä»¯¡£
¡¡¡¡¾¹ý¼òµ¥Ë¼¿¼£¬±ã¿ÉÒÔ·¢ÏÖÕâÒ»¼òµ¥µÄ¸Ä±äÆäʵҲ½ÏΪÂú×ãSOLIDÔÔòÖеÄÒ»²¿·Ö£º
¡¡¡¡* µ¥Ò»Ö°Ôð£ºSearchCriteriaBinderÖ°ÔðºÜµ¥Ò»£¬½âÎö¹¤×÷½»ÓÉͬÑùÖ°Ôðµ¥Ò»µÄTokenizer½øÐС£
¡¡¡¡* ÒÀÀµ×¢È룺ÕâÀïʹÓÃÁ˹¹Ô캯Êý×¢ÈëµÄ·½Ê½£¬SearchCriteriaBinder¶ÔTokenizerµÄÒÀÀµ²»ÊÇдËÀÔÚ´úÂëÀïµÄ¡£
¡¡¡¡* ½Ó¿Ú·ÖÀ룺SearchCriteriaBinder²¢²»Ö±½Ó·ÃÎÊTokenizer£¬¶øÊÇͨ¹ýÒ»¸ö³éÏó£¨ITokenizer£©Ê¹Óõġ£
¡¡¡¡Õâ±ãÊÇÎÒ³£Óõġ°¿É²âÊÔÐÔÇý¶¯¿ª·¢¡±£¬ÎÒÒ»¿ªÊ¼Ö»ÊÇ°´ÕÕ¹ßÀýÖ±½ÓʵÏÖBindModel·½·¨£¬È»ºó·¢ÏÖÒ»¸öÐèÒª²âÊÔµÄ˽Óз½·¨£¬Òò´ËΪÁËÌá¸ß¿É²âÊÔÐÔ£¬ÎÒ½«²¿·Ö¹¦ÄÜÌáÈ¡µ½¶ÀÁ¢µÄTokenizer¶ÔÏóÖÐÈ¥¡£ÔÚʵ¼Ê¿ª·¢¹ý³ÌÖУ¬ÎÒÒ²¿ÉÄÜÊÇÖ±½ÓÔÚÄÔ×ÓÀï½øÐмòµ¥µÄ·ÖÎö£¬È»ºóÖ±½Ó·¢ÏÖÎÒÃǵÄÈ·ÐèÒªÒ»¸ö Tokenizer·½·¨£¨ÕâµãÏëÏóÓ¦¸Ã²»ÄÑ£©£¬ÓÚÊÇÖ±½ÓʵÏÖITokenzier½Ó¿Ú£¬TokenizerÀàÒÔ¼°µ¥Ôª²âÊÔ¡£ÕâÑù£¬¿ÉÄÜ SearchCriteriaBinder´ÓÒ»¿ªÊ¼¾Í»á±ä³ÉÄ¿Ç°µÄÑù×Ó¡£²»¹ý¸ü¶àµÄÇé¿ö£¬µÄÈ·ÊÇд×Åд×Å£¬ÎªÁË¡°¿É²âÊÔÐÔ¡±¶ø½øÐеÄÖع¹¡£ÎªÁË˵Ã÷Õâ¸ö ¡°Ë¼Â·¡±£¬ÎÒ½ÓÏÂÀ´»¹ÊÇʹÓá°±àд´úÂ롪¡ª³¢ÊÔ²âÊÔ¶ø²»ÄÜ¡ª¡ªÖع¹¡±µÄ·½Ê½À´½øÐпª·¢¡£
Ïà¹ØÔĶÁ£º