ÕªÒª£º±¾ÎÄÊǼܹ¹Ö®Â·µÄϵÁÐÎÄÕ£¬ÒѾµ½ÁËµÚÆßÆª£¬Ö÷Òª·ÖÏíÁËMVCµãµÎ¡£ÏÂÒ»Õ½«ÔÙ½²CurrentUser£¬²¢ÓÉ´ËÒý³öÎÒÃǵÄÔÔò£ºÈçºÎÔÚView¡¢Controller¡¢ServiceºÍViewModelÖ®¼ä»®·ÖÂß¼£¨»òÕßÔðÈΣ©¡£
WebForm
Ëæ×ÅASP.NET MVCµÄÐËÆð£¬WebFormÒѳÉ×òÈջƻ¨£¬µ«ÎÒÆäʵ»¹ºÜÏëΪWebForm˵¼¸¾ä¡£
ûÓоÀú¹ý´ÓASPÏòASP.NETת±äµÄͬѧ£¬ÊǺÜÄÑÀí½âµ±WebForm³öÏÖʱ£¬³ÌÐòÔ³ÊÀ½çµÄ»¶ºôȸԾµÄ¡£ÊÂʵÉÏ£¬ÎÒÒ²ÊÇÔÚRazor³öÏÖÖ®ºó£¬²ÅÃãÃãǿǿµÄתÏòMVC£¬ÒòΪ¿´¼û<% %>Õâ¸ö¶«Î÷¾ÍÅ¡£ÎÒÔø¾²Î¼Ó¹ýÒ»¸öÉý¼¶ASPµ½ASP.NETµÄÏîÄ¿£¬ASPÀïÃæÂÒÆß°ËÔãµÄ´úÂë¿´µÃÎÒÑÛ¾¦ÓÖËáÓÖÕͺìͨͨµÄÁ÷Àᣬһ±²×Ó¶¼¼ÇµÃ£¡ WebForm×îºóÉú³ÉµÄhtml¿ÉÄÜ»áÓ·Ö×ÄÑ¿´£¬µ«Æä´úÂëÒ³Ãæ£¨.aspx£©ÊÇÏ൱ÇåˬƯÁÁµÄ¡£ ¼ÈÈ»ÎÒÃǶ¼ÒѾ¾ö¶¨²ÉÓÃMVCÁË£¬WebFormµÄ²»×ã¾Í²»ÓÃÔÙ¶à˵ÁË¡£µ«ÎÒÃÇÓ¦¸ÃŬÁ¦µÄѧϰºÍ½è¼øËüÓÅÐãµÄµØ·½£¬ÕâЩҲÊÇÔÚMVCµÄ¿ª·¢ÖлáÓõ½µÄ£º
- ³ÊÏÖºÍÒ³ÃæÂß¼Ïà·ÖÀë¡£WebFormÀïÓÉÓÚËüµÄ¿ò¼Ü±¾À´¾ÍÏÔʽµÄÇø·ÖÁËaspxºÍaspx.cs£¬ËùÒÔ´ó¶àÊýʱºòÎÒÃDz»»áµ£ÐÄÕâ¸öÊÂÇé¡£µ«MVCÀïÃæ£¬ÎÒÃǺÜÈÝÒ×¾ÍÔÚviewÀïÃæÀûÓÃViewModelÊý¾Ý½øÐÐÔËË㣬ģºýControllerºÍViewÖ®¼äµÄÂß¼½çÏÞ¡£Õâ¸öÎÊÌâÎÒÃǽ«ÔÚCurrentUserµÄʱºòÏêϸ½²½â¡£
- Á¼ºÃµÄÒ³Ãæ·â×°ºÍÖØÓᣵ±ÎÒÃÇ·¢ÏÖÒ³ÃæÓÖ·´¸´³öÏֵġ¢´óͬСÒìµÄ¡°²¿¼þ¡±Ê±£¬ÎÒÃǿ϶¨¾Í»áÏëµ½ÖØÓá£Õâ¾ÍÊÇ¿¼ÑéÎÒÃǹ¦Á¦µÄʱºò¡£ÎÒÏÈÌáÒ»µãÎÒÏëµ½µÄ£ºÓÐʱºòÎÒÃÇÄþÔ¸ÖØ¸´²»Ô¸ÖØÓã¡ÕâÊÇÎҵóöÀ´µÄѪÀá½Ìѵ¡£Ó¦¸ÃÊÇÔÚ´´Òµ¼ÒÔ°ÏîÄ¿µÄÆÀÂÛÒ³Ãæ²¿·Ö£¬ÎÒÔø¾ÊÔÍ¼ÖØÓÃËùÓÐÆÀÂÛµÄPartialView£¬½á¹û²Ò²»È̶ã¬×îºó·ÅÆúÖØÓ㬷´¶øº£À«Ìì¿Õ¡£ÆäʵÓÐÒ»¸ö¸üºÃµÄÀý×Ó¾ÍÊÇWebFormÖеÄGridViewºÍRepeater£¬´Óʵ¼ùÉÏ¿´£¬·´¶øÊǼòµ¥·â×°µÄRepeater¸üÊÜ»¶Ó£¬¡°´ó¶øÈ«¡±µÄGridViewÈ´ÉÙÓÐÈËÓá£ËùÒÔ·â×°ºÍÖØÓÃÓÐÒ»¸ö¶ÈµÄÎÊÌâ¡£
RouteTest Route¹¦ÄÜÊÇMVCµÄÒ»¸öÖØ´óÍ»ÆÆ£¬Ò²ÊÇÒ»¸öÖØÒªÈ±ÏÝ¡£ÓÉÓÚûÓÐÁ¼ºÃµÄ×Ô¶¯¼ì²é»úÖÆ£¬ÔÚʵ¼ÊµÄ¿ª·¢¹ý³ÌÖУ¬·Ç³£ÈÝÒ׳ö´í£¡ÏàÐÅÓйý¿ª·¢¾ÑéµÄͬѧ¶¼ÓÐÌå»á£¬ÓÐʱºòÀϰëÌì¶¼±¨´í£ºÕÒ²»µ½ViewÕÒ²»µ½Action£¬²éÀ´²éÈ¥¾ÍÒ»¸öƴд´íÎó£»ÓÐʱºòÐÂÔöÒ»ÌõRouteConfig£¬Ò»»á¶ùÆäËûͬÊÂ½ÐÆðÀ´ÁË£¬¡°¿¼£¡ÔÀ´ÊÇÄãµÄÉèÖðÑÎҵĸ²¸ÇÁË¡£²éÁËÎÒÒ»ÏÂÎ磡¡± °Ñʱ¼äÀË·ÑÔÚÕâЩµØ·½ÊµÔÚÊÇ¿Éϧ£¬ËùÒÔÎÒÃǽâ¾öÕâ¸öÎÊÌâµÄ°ì·¨ÊÇʹÓõ¥Ôª²âÊÔ£¬ÔÚPCTestµÄprojectÖÐÒýÈëÁËRouteTest¡£Ã¿Ò»´ÎÐÂÔöRouteConfig£¬ÅÜÒ»±éµ¥Ôª²âÊÔ£º×Ô¼ºµÄÄܹý£¬Ò²²»Ó°Ïì±ðÈ˵쬾ÍOKÁË¡£ ÕâÊǵ¥Ôª²âÊÔÔÚÎÒÃÇÏîÄ¿µÄUI²ã×î³É¹¦µÄÀý×Ó¡£ÕÕÀí˵£¬MVCµÄ×î´óµÄÒ»¸öºÃ´¦¾ÍÊÇ¡°¿É²âÊÔ¡±£¬ÆäËûµØ·½Ò²Ó¦¸Ã¹ã·ºÒýÈëµ¥Ôª²âÊԵ쬵«±¾ÈË͵ÀÁ£¬ÁíÍâHttpContextµÄsealedÏÞÖÆÒ²ÏÞÖÆÁ˵¥Ôª²âÊÔµÄʵʩ£¨MVC 5Ó¦¸Ã½â¾öÁËÕâ¸öÎÊÌ⣩£¬ËùÒÔĿǰUI²ãµÄµ¥Ôª²âÊÔ»¹Ã»ÓÐÕ¹¿ª¡£µ«¹À¼ÆÕâ¸ö¹¤×÷³ÙÔç¶¼µÃ×ö£¬ÏÖÔÚÒѾ³öÏÖÁËһЩÊÖ¹¤²âÊÔ·±Ëö·ÑÊÂÒ×ÒÅ©µÄÎÊÌâÁË¡£ URL/View²ã¼¶ MVCÏÖĿǰµÄÁíÒ»¸öÎÊÌâÊÇ£¬ViewºÜÄѰ´¶à²ã¼¶×éÖ¯¡£±ÈÈ磬ÎÒ¿ÉÄÜÐèÒªµÄViewÊÇÕâÑù×éÖ¯µÄ£º

×¢ÒâControllerÒ²Óв㼶¹ØÏµÉèÖá£ÎÒʼÖÕ¾õµÃÕâÑù»á¸üÇåÎúÕû½à£¬µ«Èç¹ûMVCµÄ¿ò¼Ü²»ÄÜÕâÑù½øÐС°²ã¼¶¶ÔÓ¦¡±¡£Èç¹ûÒ»¶¨ÒªÕâÑù°ÑView·Ö²ã×éÖ¯ÆðÀ´£¬ÔÚActionÖоͱØÐëд³öViewµÄÈ«²¿Â·¾¶£¬±ÈÈ磺
public class LogController : Controller { // // GET: /Account/Log/On public ActionResult On() { return View("~/Views/Account/Log/On.cshtml"); } } |
»¹µÃרÃÅÅäÖÃRouteConfig£¬ÕâҲ̫Âé·³ÁËÒ»µã¡£ËùÒÔ£¬ÎÒÃǾͻ¹ÊǾ¡Á¿°´MVCµÄ¿ò¼Ü£¬´ÓURLµÄÉè¼Æ¿ªÊ¼£¬¾Í¾¡Á¿ÊÇ/{Controller}/{action}/{route-parameter}µÄÑùʽ£¬ViewҲͬÑù£¬·ÅÔÚContoller¶ÔÓ¦µÄÎļþ¼Ðϼ´¿É¡£ Partial/ChildAction/EditorTemplate µ±ÎÒÃÇÐèÒªÖØÓÃijЩ¡°Ò³ÃæÆ¬¶Î¡±Ê±£¬ÎÒÃǾÍÃæÁÙÁËÒÔÉÏÕ⼸ÖÖÑ¡Ôñ¡£ÇÐÈëµÄµãÓкܶ࣬ÎÒÃǾÍÖ»½áºÏÎÒÃÇÏîÄ¿£¬³éÈ¡Æä×îÏÊÃ÷×îÈÝÒ×±æÈϵÄÌØµã£¬Ö±½Ó½²ÊöËûÃǵÄʹÓó¡¾°£º Ê×ÏÈÊÇEditorTemplate¡£ËüµÄÌØµã×îÃ÷ÏÔ£¬ÊǺÍPostÏà¹ØµÄ¡£Ò²¾ÍÊÇ£¬µ±Ò»¸ö¡°Ò³ÃæÆ¬¶Î¡±µÄÊý¾Ý£¬»¹ÐèÒªÔÙPost»Ø·þÎñÆ÷µÄʱºò£¬ÎÒÃǾͱØÐëʹÓÃEditorTemplate£»Èç¹û²»Ê¹ÓÃEditorTemplate£¬¾ÍViewModelµÄÊý¾Ý¾ÍÎÞ·¨´«»Ø£¨²Î¿¼£ºÈÎÎñ¹ÜÀíϵͳ´úÂëÖÐ/Views/Task/EditorTemplates£©¡£ÎªÊ²Ã´ÄØ£¿ºÍMVCµÄViewModel°ó¶¨»úÖÆÓйأ¬EditorTemplateÖеÄhtml¿Ø¼þ³ÊÏÖʱ£¬»áÔÚÆänameÉϼÓÉÏËùÊô¸¸ModelµÄǰ׺£¬ÒÔ±ãÓÚMVC×Ô¶¯½âÎöpostÊý¾Ý²¢°ó¶¨µ½ViewModel¡£ Èç¹û¡°Ò³ÃæÆ¬¶Î¡±²»ÐèÒªPOST£¬Ö»¸ºÔð³ÊÏÖ¼´¿É£¬ÓÖ¸ÃÈçºÎÑ¡ÔñÄØ£¿ÎÒÃǵÄÔÔòÊÇ£º
- Èç¹û¡°Ò³ÃæÆ¬¶Î¡±²»ÐèÒªºÍ·þÎñÆ÷¶Ë½»»¥£¬ËùÐèÒªµÄÊý¾Ý¶¼ÄÜ´Ó¸¸ModelÖлñµÃ£¬Ê¹ÓÃPartial£»
- ·ñÔò£¬Èç¹û¡°Ò³ÃæÆ¬¶Î¡±ËµÐèÒªµÄÊý¾Ý»¹ÐèÒª´Ó·þÎñÆ÷»ñµÃ£¬ÄǾÍÖ»ÄÜʹÓÃChildActionÁË¡£
HtmlHelper ³ýÁËÉÏÊö¼¸ÖÖÒ³ÃæÆ¬¶ÎµÄÖØÓ㬻¹ÓÐͨ¹ý´´½¨HtmlHelperµÄÀ©Õ¹·½·¨£¬×Ô¶¨ÒåÒ»ÖÖ¡°Ò³ÃæÆ¬¶Î¡±µÄ³ÊÏÖ·½Ê½¡£ÕâÖÖ·½Ê½Ò»°ãÊÇPartialViewµÄÒ»ÖÖÌæ´ú·½Ê½£¬ÎÒÃÇͨ³£°Ñ¡°ºÜСºÜС¡±£¨±ÈÈçÒ»¸öÁ´½Ó¡¢Ò»¸öÏÂÀÁбíµÈ£©£¬Óô¦¡°ºÜ¶àºÜ¶à¡±£¨ÉõÖÁÓÚ¿çÏîÄ¿£©µÄ¿ÉÖØÓÃhtmlƬ¶ÎÓÃHtmlHelper·â×°ÆðÀ´¡£¿É²Î¿¼£º
- ÈÎÎñ¹ÜÀíϵͳÏîÄ¿ÖеÄDocumentLink£º·â×°Ò»¸ö×ÜÊÇʹÓÃdoc.zyfei.netÓòÃûµÄhtmlÁ´½Ó
- GlobalÏîÄ¿£¨»¹Î´ÉÏ´«Ô´´úÂ룩ÖеÄEnumDropDownListFor£º·â×°Ò»¸öʹÓÃdropdownlist£¬¸ÃdropdownlistÓÉenumÌî³ä£¬Ê¹ÓÃenumÉϵÄ[Description]×÷Ϊ³ÊÏÖÎı¾
AJAX ¹Û²ìÎÒÃǵÄAction¾Í¿ÉÒÔ·¢ÏÖ£¬ÎÒÃÇΪAjaxÌṩµÄActionʼÖÕÊÇ·µ»ØµÄActionResult£¬¶ø²»ÊÇʹÓá°¸üÏȽø¡±µÄWebApi»úÖÆ£¨Ö±½Ó·µ»ØintµÈ¼òµ¥ÀàÐÍ£©¡£ÕâÖ÷ÒªÊÇÒòΪÎÒÃÇʹÓÃÁËSessionPerRequest»úÖÆ£¨Ö÷ÒªÊÇΪÁËÌá¸ßÐÔÄÜ£©£¬ÎÒÃÇÈÃÒ»¸öRequestÇëÇóֻʹÓÃÒ»¸ösession£¨¿ÉÏȼòµ¥µÄÀí½âΪһ¸öÊý¾Ý¿âÁ¬½Ó£©£¬Ò༴£º
- µ±MVC»ñµÃÒ»¸öRequest£¬ÐèҪʹÓÃsessionʱ£¬ServiceÉú³ÉÒ»¸ösession£»
- È»ºó£¬ÔÚÕâ¸öRequestµÄÕû¸öÇëÇó¹ý³ÌÖУ¬Ê¹Óõͼ½«ÊÇÕâ¸öÒѾÉú³ÉµÄsession£¨ÀàËÆÓÚ¡°µ¥Àýģʽ¡±£©£»
- µ±Request½áÊøºó£¬ÊÍ·ÅÕâ¸ösession£¬½«ËùÓиĶ¯Í¬²½µ½Êý¾Ý¿â
ºÃÁË£¬ÕâÀïÎÒÃǵĹؼüµã¾ÍÊÇʲôʱºòËã¡°Request½áÊø¡±£¿ÎÒÃǸü½øÒ»²½µÄ¶¨ÒåËüΪView³ÊÏÖÍê±ÏµÄʱºò£¬ËùÒÔÀûÓÃÁËFilter»úÖÆ£¬ÔÚOnResultExecuted()ʱͬ²½Êý¾Ý¿â£¬´úÂëÈçÏ£º
public class SessionPerRequest : ActionFilterAttribute { public override void OnResultExecuted(ResultExecutedContext filterContext) { #if PROD FFLTask.SRV.ProdService.BaseService.EndSession(); #endif base.OnResultExecuted(filterContext); } } |
ËùÒÔ£¬¼´Ê¹Ajaxµ÷Óã¬Ò²±ØÐë¾ÀúÒ»¸ö¡°View³ÊÏÖÍê±Ï¡±µÄ¹ý³Ì£¬²ÅÄÜÍê³ÉÊý¾Ýͬ²½¡£
UIDevServiceÇл» ½øÐÐǰ̨¿ª·¢£¬²»ÐèÒªÁ¬½Óºǫ́Êý¾Ý¿âµÄͬѧ£¬Ö»ÐèÒªÔÚMVCÏîÄ¿±àÒëʱ£¬ÊäÈëUIDEV¼´¿É£¨Èç¹ûÒªÕæÕýµÄÁ¬½ÓÊý¾Ý¿â£¬Ê¹ÓÃPROD£©£¬ÈçÏÂËùʾ£º

ÄÇô£¬Õ⾿¾¹ÊÇÈçºÎʵÏÖµÄÄØ£¿ ×ÜÌåÉÏÀ´Ëµ£¬ÎÒÃǽèÓÃÁËautofacÕâ¸öÀà¿â£¬ÊµÏÖÁËËùνµÄ¡°ÒÀÀµµ¹Öá±

ËùÒÔ£¬ÔÚMVCµÄControllerÖУ¬ÎÒÃÇֻʹÓÃServiceInterface¶ø²»¹ÜÆä¾ßÌåʵÏÖ£¬ÈçÏÂËùʾ£º
private IAuthroizationService _authService; public AuthController(IAuthroizationService authService) { _authService = authService; } |
×îºó£¬ÔÚGlobal.asax.csÖÐÎÒÃÇͨ¹ýÌõ¼þ±àÒë·ûif...elseÀ´È·¶¨¾¿¾¹Ê¹ÓÃÄÄÒ»ÖÖServiceʵÏÖ£ºProdServiceModule£¬»òÕßUIDevServicemodule¡£
void ResolveDependency() { var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly()); builder.RegisterFilterProvider();
#if PROD builder.RegisterModule(new ProdServiceModule()); #endif #if UIDEV builder.RegisterModule(new UIDevServicemodule()); #endif container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } |
×îºó£¬²»ÒªÍüÁË£¬ÐÂÒýÈëÒ»¸öServiceʱ£¬ÔÚProdServiceModule.cs»òÕßUIDevServicemodule.csÖÐÌí¼Ó£º
builder.RegisterType<RegisterService>().As<IRegisterService>(); |
ÕâÒ»Õ¾Ͳ¶àÁ˰ɡ£ÏÂÒ»ÕÂÎÒÃÇÔÙ½²CurrentUser£¬²¢ÓÉ´ËÒý³öÎÒÃǵÄÔÔò£ºÈçºÎÔÚView¡¢Controller¡¢ServiceºÍViewModelÖ®¼ä»®·ÖÂß¼£¨»òÕßÔðÈΣ©¡£
±¾ÎÄÖ÷Òª½²ÁËCurrentUser£¬²¢ÓÉ´ËÒý³öÎÒÃǵÄÔÔò£ºÈçºÎÔÚView¡¢Controller¡¢ServiceºÍViewModelÖ®¼ä»®·ÖÂß¼£¨»òÕßÔðÈΣ©¡£
CurrentUser£¬Ò²¾ÍÊǵ±Ç°Óû§£¬ÕâÊÇÎÒÃÇϵͳÖдóÁ¿Ê¹ÓõÄÒ»¸ö¸ÅÄî¡£
È·Èϵ±Ç°Óû§
µ±È»£¬ÎÒÃÇÀûÓõÄÊÇcookie£ºÓû§µÄID´æ·ÅÔÚcookieÖУ¬·þÎñÆ÷¶Ëͨ¹ýcookieÖеÄId£¬²éÕÒÊý¾Ý¿â£¬µÃµ½ÐèÒªµÄÓû§ÐÅÏ¢¡£
ÄÇô£¬ÕâÀï¾ÍÓÐÒ»¸ö°²È«ÎÊÌ⣬ÈçºÎ·ÀÖ¹cookieµÄαÔì»ò´Û¸Ä£¿ÎÒÃDzÉÓÃÁËÒÔÏ·½·¨£º
Ê×ÏÈ£¬cookieÖгýÁË´æ·ÅÓû§Id£¬»¹´æ·ÅÁËÒ»¸ö¼ÓÃܹýºóµÄÑéÖ¤Â룬ÆäÀ´Ô´ÈçÏ£º
- δ¼ÓÃܵÄÑéÖ¤ÂëÔÚÓû§Éú³ÉʱÓÉÏµÍ³Ëæ»ú²úÉú£¬²¢´æ´¢ÔÚÊý¾Ý¿âÖУ¬È磺287653£»
- Ëü»á±»Ê¹ÓÃMD5¼ÓÃܳÉÎÒÃÇ¿´²»¶®µÄ×Ö·û´®£¬È磺49b5f37dff119cf81fcb2b4e6077e17£»
ËùÒÔ£¬µ±·þÎñÆ÷¶ËʹÓÃcookieÖеÄÓû§Idʱ£¬»áÏȼì²é¼ÓÃܹýºóµÄÑéÖ¤ÂëÊÇ·ñÓÐЧ¡£ÄóÔìµÄÑéÖ¤ÂëÊDz»»áͨ¹ýÉóºËµÄ¡£
»¹ÓÐÒ»µãÐèҪ˵Ã÷µÄÊÇ£¬ÎÒÃDz»¿¼ÂÇÒ»¸öÓÐЧµÄcookie£¨Á¬Í¬ÑéÖ¤Â룩±»µÁÇÔµÄÇéÐΡ£ÒòΪÕâ¾ÍÏ൱ÓÚÄãµÄµçÄÔ±»±ðÈËʹÓÃÁËÒ»Ñù£¬ÎÒÃÇȷʵÎÞ·¨ÅжÏʹÓÃÄãµçÄÔµÄÊDz»ÊÇÄã±¾ÈË¡£ ΪʲôûÓÐʹÓÃsession
¿ÉÄÜÓÐͬѧ»áÏëµ½£¬Ã¿´ÎÈ¡cookieÔÙ²éÊý¾Ý¿â£¬ÊDz»ÊÇ»áÔö¼ÓÊý¾Ý¿â¸ºµ££¬ÎªÊ²Ã´²»¿¼ÂÇsessionÄØ£¿Á½¸ö·½ÃæµÄÔÒò£º
- sessionÓж¨Ê±ÇåÀí»úÖÆ¡£²»¹Üʱ¼ä³¤¶Ì£¬session×ÜÓпÉÄܱ»ÇåÀíµôµÄʱºò£¬Õâ¸öʱºò²»ÄÜÈÃÓû§ÔÙÖØÐµÇ¼°¡£¡¶àÂé·³£¬ÊDz»ÊÇ£¿Äã¿ÉÒÔif(session["userInfo"]== null)£¬ÔÙͨ¹ýcookieÈ¡Êý¾ÝÔÙ×°µ½sessionÀµ«ºÎ¿àÄØ£¿
- sessionÄÑÒÔͬ²½¸üУ¬Î¬»¤ÆðÀ´·Ç³£Âé·³¡£±ÈÈ統ǰÓû§·¢±íһƪÎÄÕ£¬»ý·ÖÔö¼ÓÁË£¬Äã¾ÍµÃ¼È¸ÄsessionÓÖ¸ÄÊý¾Ý¿â£¬Õâ¸öͬ²½¹ý³ÌÊDZȽÏÈÝÒ׳öÎÊÌâµÄ¡£
- ÉÏÃæÁ½¸öÎÊÌ⣬NHiernateµÄcacheÒѾ×öµÃºÜºÃÁË£¬²»»áÔö¼ÓÊý¾Ý¿â¸ºµ££¬Õâ¸öÒÔºó»á½²¡£
CurrentUserµÄViewModel
CurrentUser×îÂé·³µÄÒ»¼þÊÂÇéÊÇ£ººÜ¶àÒ³ÃæÊǸù¾Ý²»Í¬µÄµ±Ç°Óû§£¬ÏÔʾ²»Í¬µÄÄÚÈݵġ£ÒÔ¡°ÈÎÎñ±à¼¡±Ò³ÃæÎªÀý£¬µ±Ç°Óû§ÊǸÃÈÎÎñµÄ·¢²¼ÈË£¬·¢²¼À¸¿É±à¼£»·ñÔò£¬·¢²¼À¸½ö½öÊǿɶÁµÄ¡£
ËùÒÔ£¬×î³õÎÒÃǵķ½°¸ºÜ¼òµ¥£¬Ò²·â×°Ò»¸öCurrentUserModel¾Í¿ÉÒÔÁËѽ£¡
µ«ºóÀ´ÎÒÃÇ·¢ÏÖ£º
- ÐèÒªÅжϵĶ«Î÷Ô½À´Ô½¶à£¬±ÈÈ绹ҪÅжϵ±Ç°Óû§ÊDz»ÊǹÜÀíÔ±¡¢µ±Ç°Óû§ÓÐûÓÐÑéÊÕȨÏÞ¡¢µ±Ç°Óû§µÄÉÏÒ»´Î²Ù×÷¡¡°ÑÕâЩËùÓеÄÐÅÏ¢¶¼×°µ½Ò»¸öViewModelÀï¿Ï¶¨ÊDz»ºÏÊʵġ£Ôõô°ìÄØ£¿Ïëµ½µÄ×ÔÈ»¾ÍÊDzð·ÖÀ࣬µ«CurrentUser»¹Ôõô²ð·ÖÄØ£¿
- Ò³ÃæµÄÅжÏÂß¼Ò²±äµÃ¸´ÔÓÆðÀ´£¬±ÈÈ統ǰÓû§ÓÐûÓÐijÖÖȨÏ޵òéËûµÄÉêÇëÀúÊ·ºÍÅú×¼Çé¿ö£¬²¢ÇÒ»¹µÃ¿´µ±Ç°ÎÄÕÂÊÇÄÇÖÖÀàÐͼ°Æä×÷ÕßµÄȨÏ޵ȡ£ÕâЩ´ó ¶Î´ó¶ÎµÄÂß¼¾ÍдÔÚViewÀï̫̾£¿¹Ø¼üÊÇÓÐЩÊý¾ÝÊǵ¥¸öViewÈ¡²»µ½µÄ£¬ÐèÒª´ÓÆäËûµØ·½£¨±ÈÈçurl parameterÖУ©»ñÈ¡£¬ÕâЩ¶¼½øÒ»²½µÄÔö¼ÓÁ˸´ÔÓÐÔ¡£ÈÃÎÒÃDz»µÃ²»¿¼ÂÇ£¬ÎÒÃÇÊDz»ÊÇÓ¦¸Ã°ÑÕâЩÂß¼ÒÆµ½ControllerÖУ¬È»ºóÖ±½Ó½«½á¹û¸æËß View£¬±£³ÖViewµÄ¸É¾»Çåˬ£¿
ÔÚMVC¼Ü¹¹ÖУ¬Controller½«Model´«µÝ¸øView£¬Æäʵ¿ÉÄÜÓÐÁ½ÖÖÇé¿ö£º
- ViewÖ±½Ó³ÊÏÖModelµÄÊý¾Ý£¬±ÈÈçÖ±½ÓÏÔʾCurrentUserµÄÓû§Ãû
- View»¹¿ÉÒÔÀûÓÃModelÖеÄÊý¾Ý½øÐÐÔËË㣬ȻºóÓèÒÔ³ÊÏÖ£¬±ÈÈç±È½ÏCurrentUserºÍµ±Ç°ÈÎÎñµÄ³Ð½ÓÈË
ÎÒÔø¾¼Æ»®½ûÖ¹µôµÚ2ÖÖÇéÐΣ¬Ò²¾ÍÊÇ˵£ºÔÚViewÀïÃæ²»ÐèÒªÈκμÆË㣬ֻ¸ºÔð³ÊÏÖ¡£ÓôúÂë±íʾ¾ÍÊÇ£º
@if (Model.CurrentUserIsAccepter) { ¡¡¡¡//CurrentUserIsAccepterµÄÖµÔÚcontrollerÖлñÈ¡ } |
¶ø²»ÊÇ֮ǰµÄ£º
@if (Model.CurrentUser.Id == Model.Accepter.Id) {
} |
µ«ÎÒÃÇ×îÖÕ·ÅÆúÁË£¬ÒòΪʵÏÖÆðÀ´Ì«Ó·Ö×ÁË¡£ÎÒÃÇ¿ÉÒÔÏëÏó£¬ÕâÑùµÄ»°£¬ÎÒÃÇÊ×ÏȾÍÖÁÉÙÐèÒªÈý¸öIsÊôÐÔ£º
public class EditModel { public bool IsAccepter { get; set; } public bool IsOwner { get; set; } public bool IsPublisher { get; set; } } |
Óеã¹Ö£¬µ«ºÃÏñ»¹¿ÉÒÔ½ÓÊÜ£¬µ«ºóÀ´Çé¿ö·¢ÉúÁ˱仯£¬ÎÒÃÇ»¹µÃ¿¼Âǵ±Ç°Óû§¼´ÊÇ·¢²¼ÈËÓÖÊdzнÓÈË£¬»òÕß¼´ÊdzнÓÈËÓÖÊÇÑéÊÕÈË£¬»òÕß¼ÈÊÇ¡¡ÓÖÊÇ¡¡µÄÇéÐΣº
public class EditModel { public bool IsAccepter { get; set; } public bool IsOwner { get; set; } public bool IsPublisher { get; set; }
public bool IsBothAccepterAndOwner { get; set; } public bool IsBothAccepterAndPublisher { get; set; } public bool IsBothPublisherAndOwner { get; set; } //...... }
|
Õâ´úÂë¸øÈ˵ĸоõ¾ÍÊÇÓв¡ÁË¡£¹Ø¼üÊÇ£¬ËÖªµÀÒÔºó»¹À´²»À´Ò»¸ö¡°ÊÇ¡ºÍ¡µ«²»ÊÇ¡¡¡±µÄÂ߼Ĩ£¿µ½Ê±ºòÓÖ¸ÃÔõô°ìÄØ£¿
//ÈÎÎñ±à¼Ò³Ã棨/Task/Edit/{taskId}£©ÊÇÒ»¸öÒ³Ãæ³ÊÏÖÂß¼±È½Ï¸´ÔӵĵäÐÍÀý×Ó£¬ //ÎÒÃÇǰºó´ó¸ÄÁËÈý´Î£¬²ÅÐγɽñÌìËùʹÓõĴúÂë¸ñ¾Ö¡£ //ÎÒÒÔǰ˵ÎÒ´øµÄÒ»¸öÃÃÖ½¿´×Å´úÂë¿Þ£¬¿ÞµÄ¾ÍÊÇÕâÀºÇºÇ //ÓÐÐËȤµÄͬѧ¿ÉÒÔÑо¿Ò»Ï¡£ |
ËùÒÔ£¬È¡ÇÉÊDz»ÐÐÁË£¬ÎÒÃÇ»¹ÊǵÃÃæ¶ÔÕâ¸öÎÊÌ⣺
ÈçºÎ»®·ÖControllerºÍViewÖ®¼äµÄÂß¼/ÔðÈΣ¿
¸üÖ±°×Ò»µãµÄ½²£¬ÄÄЩʸÃController×ö£¬ÄÄЩʸÃView×ö£¿Õâ¸öÎÊÌâÕæµÄ³¬¼¶Å°ÐÄ¡£ÎÒÏëÀ´ÏëÈ¥£¬Ö»ÄÜ˵£º¡°ÄÜController×öµÄ£¬¾¡Á¿ÈÃController×ö¡±¡£ÎÒ×Ô¼º¶ÔÕâ¸öÎÊÌâ¶¼Ï൱²»ÂúÒ⣬µ«ÊµÔÚÊÇûÓа취À²¡£
¾ßÌåµ½CurrentUserµÄViewModel£¬ÎÒÃÇÌá³öÒÔÏÂÁ½¸öÔÔò£º
- ²»°üº¬ÐèÒªºÍÆäËû¶ÔÏó½»»¥ÔËËã²ÅÄܵõ½µÄÊý¾Ý£¬±ÈÈ統ǰÓû§ÊDz»Êǵ±Ç°ÈÎÎñµÄ·¢²¼ÈË£¬ÐèÒªºÍ¡°µ±Ç°ÈÎÎñµÄ·¢²¼ÈË¡±×ö±È½Ï£¬¾Í²»Äܰüº¬½øÀ´
- Ö»ÄÜÊÇÐèÒª¶à¸öView¹²ÓõÄÊý¾Ý£¬²ÅÄܷŽøÀ´¡£±ÈÈçÓû§Ãû£¬ºÜ¶àView¶¼ÐèÒª£¬¾Í·Å½øÀ´ºÃÁË¡£
ΪʲôÐèÒªÃ÷È·ÕâЩÔÔò
¿ÉÄÜÄãÄÍ×ÅÐÔ×Ó¿´ÁËÉÏÃæµÄ·ÖÎö£¬×îºóÈ´Ö»µÃµ½Ò»¸öËÆÊǶø·ÇÓÖµ°ÌÛµÄÔÔò£¬»áÈ̲»×¡µÄÎÊ£¬¡°ÎªÊ²Ã´Ò»¶¨ÐèÒª/½²½âÕâЩÔÔò£¿ÈóÌÐòÔ±¸ù¾Ýʵ¼ÊÇé¿ö£¬×ÔÓÉ·¢»Ó£¬²»ÐÐô£¿¡±
dz²ã´ÎµÄÔÒòÊÇÒª±£Ö¤´úÂëµÄ¿É¶ÁÐÔ¡£ÔĶÁ±ðÈ˵ĴúÂëÊÇÒ»¼þ·Ç³£ÀÛµÄÊÂÇé¡£µ«Èç¹ûËùÓеĴúÂë¶¼ÏñÒ»¸öÈËдµÄ£¬¶øÇÒÕâ¸öÈ˵Ä˼·×ÔʼÖÁÖÕ¶¼ÊǷdz£ÇåÎúµÄ£¬ÕâÑù£¬ÎÒÃÇ»áÉÔÉÔÇáËÉÒ»µã¡£´úÂë²»ÊÇÎÄѧ×÷Æ·£¬ÔÚ¾ø´ó¶àÊýÇé¿öÏ£¬²»ÄÜÌìÂíÐпÕ×ÔÓÉ·¢»Ó£¡
ÎÒÃǺܶ࿪·¢ÈËÔ±¶¼ÒѾ¿ªÊ¼×¢Òâ´úÂëµÄ¹æ·¶£¬µ«´ó¶àÊý»¹Í£ÁôÔÚËõ½ø¡¢»»ÐС¢ÃüÃûÖ®ÀàµÄϸ½Ú£¨µ±È»£¬ÕâЩҲºÜÖØÒª£©ÉÏ£»¶ø¼Ü¹¹Ê¦Ó¦Õ¾ÔÚÒ»¸ö¸üÈ«¾ÖµÄ¸ß¶È£¬À´¡°¹æ·¶¡±ËùÓеĿª·¢ÐÐΪ¡£
ËùÒÔ£¬Æäʵ¸üÉî²ã´ÎµÄÔÒòÊÇ£ºËùÓеĴúÂë¶¼±ØÐë¹æ·¶»¯¡£¼ÈȻҪ¹æ·¶»¯£¬ÄÇôÊ×ÏȾÍÒªÓй淶£¡ÏÈ¿ÉÒÔ²»¹ÜºÃ»µ£¬µ«ÖÁÉÙÒªÓС£ÄÇôÔõÃ´ÖÆ¶¨ÍêÉÆÕâ¸ö¹æ·¶ÄØ£¿ÎÒ·ÖÏíÒ»ÏÂÎҵľÑ飺
- °´¹æ·¶Îĵµ£¬×öÈëÖ°Åàѵ£¬Åàѵ¿ÉÒÔ×ÅÖØ½²µÀÀí£¬Ç¿»¯¿ª·¢ÈËÔ±´úÂë¹æ·¶»¯µÄ˼ά£»
- ËùÓдúÂë¶¼±ØÐëreview¡£reviewÒªÍù¡°Ìô´Ì¡±µÄ·½Ïò¿¿£¬ËùÒÔ²»¹æ·¶µÄ´úÂëÆäʵÊǺÜÈÝÒ×±»·¢Ïֵģ»
- ¿ª·¢ÈËÔ±²»·þreviewµÄ½á¹û£¬reviewµÄÈËÔ±ÒªÄóöÒÀ¾Ý£¨¹æ·¶Îĵµ£©À´£»
- ¹æ·¶ÎĵµÖÐÈç¹û»¹Ã»ÓÐÏà¹ØµÄ¹æ¶¨£¬Á¢¼´²¹³ä£¬²¢ÕÕ´ËÖ´ÐУ¬°üÀ¨¸ÄÕýÒÔǰ²»ºÏ¹æ·¶µÄ´úÂë
ÕâÑù²»¶ÏµÄµü´ú£¬»ù±¾ÉϾÍÄܲ»¶ÏµÄÌá¸ß´úÂëµÄ¹æ·¶ÐÔ£¬²¢µÃµ½Ò»·Ý²»´íµÄ¹æ·¶Îĵµ¡£
|