2016-03-31 15 views
0

Sayfa/içerik sunulmadan önce Kentico 7 içinde bir filtre gerçekleştirmenin bir yolu var mı?Kentico'da İstek/Yol Filtresi 7

Benim durumum, bir sorgu dizesi parametresini doğrulamam gerekiyor ve geçerli değilse, istemci başka bir sayfaya yönlendiriliyor. Bunun JavaScript ile kolayca yapılabileceğini biliyorum, ancak tarayıcınızdaki JS'yi kapatmak bunu kolayca atlatabilir.

cevap

0

gibi CMSPages_PortalTemplate olayları ve `taban sınıfları vardır:

protected override void OnPreRender(EventArgs e) 
    protected override void OnError(EventArgs e); 
    // 
    // Summary: 
    //  Init event handler. 
    protected override void OnInit(EventArgs e); 
    // 
    // Summary: 
    //  Load event handler. 
    protected override void OnLoad(EventArgs e); 
    // 
    // Summary: 
    //  PreInit event handler. 
    protected override void OnPreInit(EventArgs e); 
    // 
    // Summary: 
    //  PreRender event handler. 
    protected override void OnPreRender(EventArgs e); 
    // 
    // Summary: 
    //  Unload event handler. 
    protected override void OnUnload(EventArgs e); 
    // 
    // Summary: 
    //  Render event handler. 
    protected override void Render(HtmlTextWriter writer); 
    . 
    . 
    . 

Ama emin değilim ve sanırım bu değil en iyi uygulamayı şüpheliyim. Belki de probleminizi ve ne tür bir sorguçu, neden ve nerede doğrulamak istediğinizi tanımlayabilirsiniz.

+0

Doğrulanması gereken ve sorgu dizesinden alınan bir değer vardır. Doğrulama doğruysa, sayfa normal şekilde yüklenir, değilse, kullanıcı yeniden yönlendirilir. Hepsi bu kadar. – AnimaSola

0

Bulunduğunuz yerdeyseniz, "RandomRedirection" gibi basit bir web parçası oluşturacağım. İşte bu web bölümlerinin dosya yolu 8 ~/CMSWebParts/General/RandomRedirection.ascx.cs sürümünde. Web dizesi kodunuzda sorgu dizesi parametresini test edebilir ve yönlendirmeyi yapabilecek şekilde yapabilirsiniz. İşte

RandomREdirection web parçalar koyun

using System; 

using CMS.Helpers; 
using CMS.PortalControls; 
using CMS.PortalEngine; 

public partial class CMSWebParts_General_RandomRedirection : CMSAbstractWebPart 
{ 
    #region Webpart properties 

    /// <summary> 
    /// URL to redirect if the query value is not correct. 
    /// </summary> 
    public string RedirectionURL 
    { 
     get 
     { 
      return ValidationHelper.GetString(GetValue("RedirectionURL"), ""); 
     } 
     set 
     { 
      SetValue("RedirectionURL", value); 
     } 
    } 

    #endregion 


    #region Webpart methods 

    /// <summary> 
    /// Content loaded event handler. 
    /// </summary> 
    public override void OnContentLoaded() 
    { 
     base.OnContentLoaded(); 
     SetupControl(); 
    } 


    /// <summary> 
    /// Initializes the control properties. 
    /// </summary> 
    protected void SetupControl() 
    { 
     if (!StopProcessing) 
     { 
      if ((RedirectionURL.Trim().Length > 0) && 
       PortalContext.ViewMode.IsLiveSite()) 
      { 
       string newURL = URLHelper.ResolveUrl(RedirectionURL.Trim()); 
       if ((RequestContext.CurrentURL != newURL) && 
        (URLHelper.GetAbsoluteUrl(RequestContext.CurrentURL) != newURL)) 
       { 
        var value = QueryHelper.GetString("queryName", String.Empty); 
        //Test value of your query parameter 
        if (!value.Equals("queryValue")) 
        { 
         newURL = URLHelper.RemoveParameterFromUrl(newURL, "queryName"); 
         URLHelper.ResponseRedirect(newURL); 
        } 
       } 
      } 
     } 
    } 


    /// <summary> 
    /// Reloads the control data. 
    /// </summary> 
    public override void ReloadData() 
    { 
     base.ReloadData(); 
     SetupControl(); 
    } 

    #endregion 
} 

(benim kod bu sürümde ancak sürümü 8 ile test edilmez yüzden üzgünüm, sürüm yerel olarak yüklü 7 gerekmez) den esinlenerek koduna örnek aşağıdadır Web sayfanızın ana sayfanızın üst bölümünde ve işte başlıyorsunuz.

Bu yardımcı olur umarız!