Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
¼Ü¹¹Ö®Â·£¨Î壩£ºMVCµãµÎºÍ´ÓCurrentUser˵Æð
 
×÷Õߣº×ÔÓÉ·É À´Ô´:CSDN   ·¢²¼ÓÚ 2015-12-22
  3354  次浏览      30
 

ÕªÒª£º±¾ÎÄÊǼܹ¹Ö®Â·µÄϵÁÐÎÄÕ£¬ÒѾ­µ½ÁËµÚÆßÆª£¬Ö÷Òª·ÖÏíÁË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£¨¿ÉÏȼòµ¥µÄÀí½âΪһ¸öÊý¾Ý¿âÁ¬½Ó£©£¬Ò༴£º

  1. µ±MVC»ñµÃÒ»¸öRequest£¬ÐèҪʹÓÃsessionʱ£¬ServiceÉú³ÉÒ»¸ösession£»
  2. È»ºó£¬ÔÚÕâ¸öRequestµÄÕû¸öÇëÇó¹ý³ÌÖУ¬Ê¹Óõͼ½«ÊÇÕâ¸öÒѾ­Éú³ÉµÄsession£¨ÀàËÆÓÚ¡°µ¥Àýģʽ¡±£©£»
  3. µ±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£¬Æäʵ¿ÉÄÜÓÐÁ½ÖÖÇé¿ö£º

  1. ViewÖ±½Ó³ÊÏÖModelµÄÊý¾Ý£¬±ÈÈçÖ±½ÓÏÔʾCurrentUserµÄÓû§Ãû
  2. 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£ÇåÎúµÄ£¬ÕâÑù£¬ÎÒÃÇ»áÉÔÉÔÇáËÉÒ»µã¡£´úÂë²»ÊÇÎÄѧ×÷Æ·£¬ÔÚ¾ø´ó¶àÊýÇé¿öÏ£¬²»ÄÜÌìÂíÐпÕ×ÔÓÉ·¢»Ó£¡

ÎÒÃǺܶ࿪·¢ÈËÔ±¶¼ÒѾ­¿ªÊ¼×¢Òâ´úÂëµÄ¹æ·¶£¬µ«´ó¶àÊý»¹Í£ÁôÔÚËõ½ø¡¢»»ÐС¢ÃüÃûÖ®ÀàµÄϸ½Ú£¨µ±È»£¬ÕâЩҲºÜÖØÒª£©ÉÏ£»¶ø¼Ü¹¹Ê¦Ó¦Õ¾ÔÚÒ»¸ö¸üÈ«¾ÖµÄ¸ß¶È£¬À´¡°¹æ·¶¡±ËùÓеĿª·¢ÐÐΪ¡£

ËùÒÔ£¬Æäʵ¸üÉî²ã´ÎµÄÔ­ÒòÊÇ£ºËùÓеĴúÂë¶¼±ØÐë¹æ·¶»¯¡£¼ÈȻҪ¹æ·¶»¯£¬ÄÇôÊ×ÏȾÍÒªÓй淶£¡ÏÈ¿ÉÒÔ²»¹ÜºÃ»µ£¬µ«ÖÁÉÙÒªÓС£ÄÇôÔõÃ´ÖÆ¶¨ÍêÉÆÕâ¸ö¹æ·¶ÄØ£¿ÎÒ·ÖÏíÒ»ÏÂÎҵľ­Ñ飺

  1. °´¹æ·¶Îĵµ£¬×öÈëÖ°Åàѵ£¬Åàѵ¿ÉÒÔ×ÅÖØ½²µÀÀí£¬Ç¿»¯¿ª·¢ÈËÔ±´úÂë¹æ·¶»¯µÄ˼ά£»
  2. ËùÓдúÂë¶¼±ØÐëreview¡£reviewÒªÍù¡°Ìô´Ì¡±µÄ·½Ïò¿¿£¬ËùÒÔ²»¹æ·¶µÄ´úÂëÆäʵÊǺÜÈÝÒ×±»·¢Ïֵģ»
  3. ¿ª·¢ÈËÔ±²»·þreviewµÄ½á¹û£¬reviewµÄÈËÔ±ÒªÄóöÒÀ¾Ý£¨¹æ·¶Îĵµ£©À´£»
  4. ¹æ·¶ÎĵµÖÐÈç¹û»¹Ã»ÓÐÏà¹ØµÄ¹æ¶¨£¬Á¢¼´²¹³ä£¬²¢ÕÕ´ËÖ´ÐУ¬°üÀ¨¸ÄÕýÒÔǰ²»ºÏ¹æ·¶µÄ´úÂë

ÕâÑù²»¶ÏµÄµü´ú£¬»ù±¾ÉϾÍÄܲ»¶ÏµÄÌá¸ß´úÂëµÄ¹æ·¶ÐÔ£¬²¢µÃµ½Ò»·Ý²»´íµÄ¹æ·¶Îĵµ¡£

 

   
3354 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

Óû§¹ÊÊÂÓëÓÃÀý
½»»¥Éè¼ÆÊ¦Ö®¾«Òæ»­²¼Æª
Êý¾Ý·ÖÎöÖ®Óû§»­Ïñ·½·¨Óëʵ¼ù
ÈçºÎ¿ìËÙ½¨Á¢Óû§Ä£ÐÍ£¿
 
Ïà¹ØÎĵµ

Óû§½çÃæÉè¼Æ
¸øÆóÒµ×ö´óÊý¾Ý¾«×¼Óû§»­Ïñ
Óû§ÌåÑéºÍ½»»¥Éè¼Æ
´óÊý¾ÝϵÄÓû§»­Ïñ
Ïà¹Ø¿Î³Ì

Óû§ÌåÑé&½çÃæÉè¼Æ
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
Óû§Ñо¿ÓëÓû§½¨Ä£
Óû§ÌåÑéµÄÈí¼þUIÉè¼Æ×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

´ÓÊÖ»úµÇÂ¼Ò³ÃæÉè¼ÆÏëµ½µÄ
ÈçºÎ°ÑÎÞÒâʶÒýÈë½»»¥Éè¼ÆÖÐ
½»»¥Éè¼ÆµÄÕæÏà
µ±ÊÓ¾õÉè¼ÆÊ¦ÓöÉϲúÆ·¾­Àí
ÊÖ»ú½»»¥Éè¼ÆÔ­Ôò
Óû§ÌåÑéÖ®ÍøÒ³°å¿éÉè¼Æ

ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
¿ÉÓÃÐÔÆÀ¹À
Desktop¼°Web-basedÊÓ¾õÉè¼Æ
ÈÏÖªÔ­ÀíÓëÉè¼ÆÓ¦ÓÃ
ÊÖ»úÓû§½çÃæÉè¼Æ

±±¾© ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ
±±¾© Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉϺ£ »ªÎª Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉîÛÚ Óû§ÌåÑé& ½çÃæÉè¼Æ
°®Á¢ÐÅ ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
±±¾© Óû§ÌåÑéÓë½çÃæÉè¼Æ
¸£ÖÝ ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ