SiteMapProvider.FindSiteMapNode Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta geçersiz kılındığında, sayfayı temsil eden bir SiteMapNode nesneyi alır.
Aşırı Yüklemeler
FindSiteMapNode(String) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen URL'deki sayfayı temsil eden bir SiteMapNode nesnesi alır. |
FindSiteMapNode(HttpContext) |
Belirtilen HttpContext nesneyi kullanarak şu anda istenen sayfayı temsil eden bir SiteMapNode nesnesi alır. |
FindSiteMapNode(String)
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen URL'deki sayfayı temsil eden bir SiteMapNode nesnesi alır.
public:
abstract System::Web::SiteMapNode ^ FindSiteMapNode(System::String ^ rawUrl);
public abstract System.Web.SiteMapNode FindSiteMapNode (string rawUrl);
abstract member FindSiteMapNode : string -> System.Web.SiteMapNode
Public MustOverride Function FindSiteMapNode (rawUrl As String) As SiteMapNode
Parametreler
- rawUrl
- String
öğesinin alındığı sayfayı tanımlayan URL SiteMapNode.
Döndürülenler
SiteMapNode tarafından rawURL
tanımlanan sayfayı temsil eden bir ; aksi takdirde, null
karşılık gelen SiteMapNode yoksa veya güvenlik kırpma etkinleştirildiyse ve SiteMapNode geçerli kullanıcı için döndürülemez.
Örnekler
Aşağıdaki kod örneği, soyut SiteMapProvider sınıfı uygulayan bir sınıfta yönteminin nasıl uygulandığını FindSiteMapNode gösterir. nesnesinden SimpleTextSiteMapProvider
HttpContext o anda görüntülenen sayfanın URL'sini almak için adlı FindUrl
bir yardımcı yöntemi kullanır.
Bu kod örneği, sınıfı için SiteMapProvider sağlanan daha büyük bir örneğin parçasıdır.
// Implement the FindSiteMapNode method.
public override SiteMapNode FindSiteMapNode(string rawUrl)
{
// Does the root node match the URL?
if (RootNode.Url == rawUrl)
{
return RootNode;
}
else
{
SiteMapNode candidate = null;
// Retrieve the SiteMapNode that matches the URL.
lock (this)
{
candidate = GetNode(siteMapNodes, rawUrl);
}
return candidate;
}
}
' Implement the FindSiteMapNode method.
Public Overrides Function FindSiteMapNode(ByVal rawUrl As String) As SiteMapNode
' Does the root node match the URL?
If RootNode.Url = rawUrl Then
Return RootNode
Else
Dim candidate As SiteMapNode = Nothing
' Retrieve the SiteMapNode that matches the URL.
SyncLock Me
candidate = GetNode(siteMapNodes, rawUrl)
End SyncLock
Return candidate
End If
End Function 'FindSiteMapNode
private SiteMapNode GetNode(ArrayList list, string url)
{
for (int i = 0; i < list.Count; i++)
{
DictionaryEntry item = (DictionaryEntry)list[i];
if ((string)item.Key == url)
return item.Value as SiteMapNode;
}
return null;
}
// Get the URL of the currently displayed page.
private string FindCurrentUrl()
{
try
{
// The current HttpContext.
HttpContext currentContext = HttpContext.Current;
if (currentContext != null)
{
return currentContext.Request.RawUrl;
}
else
{
throw new Exception("HttpContext.Current is Invalid");
}
}
catch (Exception e)
{
throw new NotSupportedException("This provider requires a valid context.",e);
}
}
Private Function GetNode(ByVal list As ArrayList, ByVal url As String) As SiteMapNode
Dim i As Integer
For i = 0 To list.Count - 1
Dim item As DictionaryEntry = CType(list(i), DictionaryEntry)
If CStr(item.Key) = url Then
Return CType(item.Value, SiteMapNode)
End If
Next i
Return Nothing
End Function 'GetNode
' Get the URL of the currently displayed page.
Private Function FindCurrentUrl() As String
Try
' The current HttpContext.
Dim currentContext As HttpContext = HttpContext.Current
If Not (currentContext Is Nothing) Then
Return currentContext.Request.RawUrl
Else
Throw New Exception("HttpContext.Current is Invalid")
End If
Catch e As Exception
Throw New NotSupportedException("This provider requires a valid context.", e)
End Try
End Function 'FindCurrentUrl
Açıklamalar
sınıfından türetilen sınıfların SiteMapProvider soyut FindSiteMapNode yöntemini uygulaması gerekir.
Sağlanan URL sanal veya mutlak bir URL olabilir. Ayrıca, gibi ~/apprelativedirectory
uygulama göreli söz dizimi kullanan bir URL de olabilir. Yöntemin herhangi bir uygulamasının uygulama göreli söz dizimini FindSiteMapNode düzgün bir şekilde ayrıştırdığından ve işlediğinden emin olun.
XmlSiteMapProvider ASP.NET için varsayılan site haritası sağlayıcısı olan sınıfı, sınıfların koruduğu çeşitli koleksiyonlarda anahtar olarak bir SiteMapNode nesnenin URL'sini kullanır. Bu nedenle, bir SiteMapNode URL sağlarsa, site haritası sağlayıcısı kapsamında benzersiz olmalıdır. URL sağlanmazsa, öğesini tanımlamak SiteMapNodeiçin benzersiz bir tanımlayıcı oluşturulur.
Uygulayanlara Notlar
Türetilmiş bir sınıfta yöntemini geçersiz kıldığınızda FindSiteMapNode(String) , URL ile eşleşen bir SiteMapNode nesne geçerli site haritasında sağlayıcı tarafından bulunamazsa ve sağlayıcı alt sağlayıcıları destekliyorsa, aramayı alt sağlayıcılara genişlettiğinden emin olun.
Ayrıca bkz.
Şunlara uygulanır
FindSiteMapNode(HttpContext)
Belirtilen HttpContext nesneyi kullanarak şu anda istenen sayfayı temsil eden bir SiteMapNode nesnesi alır.
public:
virtual System::Web::SiteMapNode ^ FindSiteMapNode(System::Web::HttpContext ^ context);
public virtual System.Web.SiteMapNode FindSiteMapNode (System.Web.HttpContext context);
abstract member FindSiteMapNode : System.Web.HttpContext -> System.Web.SiteMapNode
override this.FindSiteMapNode : System.Web.HttpContext -> System.Web.SiteMapNode
Public Overridable Function FindSiteMapNode (context As HttpContext) As SiteMapNode
Parametreler
- context
- HttpContext
Düğüm HttpContext bilgilerini istenen sayfanın URL'si ile eşleştirmek için kullanılır.
Döndürülenler
SiteMapNode şu anda istenen sayfayı temsil eden bir; aksi takdirde, null
içinde karşılık gelen SiteMapNode SiteMapNode yoksa veya sayfa bağlamı ise null
.
Açıklamalar
yöntemi, FindSiteMapNode ham URL'yi veya isteğin sanal yolunu temel alarak istenen sayfanın nesnesini SiteMapNode almak için soyut FindSiteMapNode yöntemini çağırır. içinde SiteMapnull
karşılık gelen SiteMapNode bir şey bulunmazsa döndürülür.
FindSiteMapNode yöntemi, varsayılan olarak bir SiteMapNode kullanıcı için erişilebilir olup olmadığını denetlemez.