ASP.NET½«WebÕ¾µãϵľø¶Ô·¾¶×ª»»ÎªÐéÄâ·¾¶
ASP.NET½«WebÕ¾µãϵľø¶Ô·¾¶×ª»»ÎªÐéÄâ·¾¶
2009-11-25 10:39
ºÜ¾³£Ê¹Óõ½µÄÒ»¸ö¹¦ÄÜ,µ«ÔÚÔÚÍøÉÏȴһֱûÓÐÕÒµ½Ïà¹ØµÄ½â¾ö·½·¨,½ñÌì½è×ÅÏîĿӦÓõ½µÄ»ú»áдÁËÁ½¸ö½«¾ø¶Ô·¾¶×ª»»ÎªÐéÄâ·¾¶·â×°ºÃµÄ·½·¨
¡¡¡¡½«WebÕ¾µãϵľø¶Ô·¾¶×ª»»ÎªÏà¶ÔÓÚÖ¸¶¨Ò³ÃæµÄÐéÄâ·¾¶
¡¡¡¡/**//// <summary>
¡¡¡¡/// ½«WebÕ¾µãϵľø¶Ô·¾¶×ª»»ÎªÏà¶ÔÓÚÖ¸¶¨Ò³ÃæµÄÐéÄâ·¾¶
¡¡¡¡/// </summary>
¡¡¡¡/// <param name="page">µ±Ç°Ò³ÃæÖ¸Õ룬һ°ãΪthis</param>
¡¡¡¡/// <param name="specifiedPath">¾ø¶Ô·¾¶</param>
¡¡¡¡/// <returns>ÐéÄâ·¾¶, ÐÍÈç: ../../</returns>
¡¡¡¡public static string ConvertSpecifiedPathToRelativePathForPage(Page page, string specifiedPath)
¡¡¡¡{
¡¡¡¡ // ¸ùĿ¼ÐéÄâ·¾¶
¡¡¡¡ string virtualPath = page.Request.ApplicationPath;
¡¡¡¡ // ¸ùĿ¼¾ø¶Ô·¾¶
¡¡¡¡ string pathRooted = HostingEnvironment.MapPath(virtualPath);
¡¡¡¡ // Ò³ÃæÐéÄâ·¾¶
¡¡¡¡ string pageVirtualPath = page.Request.Path;
¡¡¡¡ if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1)
¡¡¡¡ {
¡¡¡¡ throw new Exception(string.Format("\"{0}\"ÊÇÐéÄâ·¾¶¶ø²»ÊǾø¶Ô·¾¶!", specifiedPath));
¡¡¡¡ }
¡¡¡¡ // ת»»³ÉÏà¶Ô·¾¶
¡¡¡¡ //(²âÊÔ·¢ÏÖ£¬pathRooted ÔÚ VS2005 ×Ô´øµÄ·þÎñÆ÷¸úÔÚIISϸùĿ¼»òÕßÐéÄâĿ¼ÔËÐÐËÆºõ²»Ò»Ñù,
¡¡¡¡ // Óд˵ط½ºóÃæ»á¼Ó"\", ÓÐЩÔò²»»á, Ϊ±£ÏÕÆð¼ûÅжÏÒ»ÏÂ)
¡¡¡¡ if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\")
¡¡¡¡ {
¡¡¡¡ specifiedPath = specifiedPath.Replace(pathRooted, "/");
¡¡¡¡ }
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡ specifiedPath = specifiedPath.Replace(pathRooted, "");
¡¡¡¡ }
¡¡¡¡ string relativePath = specifiedPath.Replace("\\", "/");
¡¡¡¡ string[] pageNodes = pageVirtualPath.Split('/');
¡¡¡¡ // ¼õÈ¥×îºóÒ»¸öÒ³ÃæºÍÇ°ÃæÒ»¸ö "" Öµ
¡¡¡¡ int pageNodesCount = pageNodes.Length - 2;
¡¡¡¡ for (int i = 0; i < pageNodesCount; i++)
¡¡¡¡ {
¡¡¡¡ relativePath = "/.." + relativePath;
¡¡¡¡ }
¡¡¡¡ if (pageNodesCount > 0)
¡¡¡¡ {
¡¡¡¡ // Èç¹û´æÔÚ ".." , Ôò°Ñ×îÇ°ÃæµÄ "/" È¥µô
¡¡¡¡ relativePath = relativePath.Substring(1, relativePath.Leng
Ïà¹ØÎĵµ£º
MultiView ºÍ View Web ·þÎñÆ÷¿Ø¼þÓÃ×÷ÆäËû¿Ø¼þºÍ±ê¼ÇµÄÈÝÆ÷£¬²¢ÌṩÁËÒ»ÖÖ¿É·½±ãµØÏÔʾÐÅÏ¢µÄÌæ»»ÊÓͼµÄ·½Ê½¡£
Ò»¡¢·½°¸
¿ÉÒÔʹÓà MultiView ºÍ View ¿Ø¼þÖ´ÐÐÈçÏÂÈÎÎñ£º
·¸ù¾ÝÓû§Ñ¡Ôñ»òÆäËûÌõ¼þÌṩ±¸Ñ¡¿Ø¼þ¼¯¡£ÀýÈ磬Äú¿ÉÄÜÔÊÐíÓû§´ÓÒ»¸öÔ´ (feed) ÁбíÖÐÑ¡Ôñ£¬ÆäÖ ......
ÓÉÓÚÒ³Ãæ¿Ø¼þµÄʼþÒýÆðµÄpostback»Ø·¢£¨±ÈÈçµã»÷ʼþ£©´¦Àí³ÌÐò·¢ÉúÔÚÓû§¿Ø¼þ³õʼ»¯Ê¼þ£¨onload£©Ö®ºó£¬ËùÒÔÒªÏëͨ¹ýµã»÷ʼþ´¦Àíº¯ÊýÀ´´«µÝÖµµ½Óû§¿Ø¼þ£¬±ØÐëÒªÔÚÒ³ÃæµÄonloadÖд«Öµ if(!page.IsPostBack) { Ò³Ãæ³õʼ»¯£º// } else { ´«µÝ²ÎÊýµ½Óû§¿Ø¼þ´¦Àí³ÌÐò£¨£© ......
PlaceHolder ¿Ø¼þʹÄú¿ÉÒÔ½«¿ÕÈÝÆ÷¿Ø¼þ·ÅÖõ½Ò³ÉÏ£¬È»ºóÔÚÔËÐÐʱ¶¯Ì¬µØ½«×ÓÔªËØÌí¼Óµ½¸ÃÈÝÆ÷ÖС£
Ò»¡¢±³¾°
PlaceHolder Web ·þÎñÆ÷¿Ø¼þʹÄú¿ÉÒÔ½«¿ÕÈÝÆ÷¿Ø¼þ·ÅÖõ½Ò³ÄÚ£¬È»ºóÔÚÔËÐÐʱ¶¯Ì¬Ìí¼Ó¡¢É¾³ý»òÒÀ´Îͨ¹ý×ÓÔªËØ¡£¸Ã¿Ø¼þÖ»³ÊÏÖÆä×ÓÔªËØ£»Ëü²»³ÊÏÖ×ÔÉíµÄÈκαê¼Ç¡£
ÀýÈ磬 ......
Äú¿ÉÒÔʹÓà Substitution ¿Ø¼þ£¬ÔÚÍøÒ³ÉÏ´´½¨¿É¶¯Ì¬¸üв¢¿ÉËæºó¼¯³Éµ½»º´æÒ³ÖеÄÇøÓò¡£
Ò»¡¢·½°¸
ʹÓà Substitution ¿Ø¼þ¿ÉÒÔÔÚÒª»º´æÊä³öµÄÍøÒ³ÉÏÖ¸¶¨ÒªÏÔʾ¶¯Ì¬ÄÚÈݵIJ¿·Ö¡£¶ÔÓÚ¶àÊýÄÚÈݶ¼Òª½øÐлº´æµÄÒ³£¬Substitution ¿Ø¼þÌṩÁ˽øÐв¿·ÖÒ³»º´æµÄ¼ò»¯µÄ½â¾ö·½°¸¡£Äú¿ÉÒÔ»º´æÕû¸öÒ³µÄÊä³ö£¬È»ºóʹÓà Subst ......