ページ/コンテンツが配信される前にKentico 7でフィルタを実行する方法はありますか?Kenticoのリクエスト/ルートフィルタ7
私のシナリオでは、クエリ文字列パラメータを検証する必要があります。有効でない場合、クライアントは別のページにリダイレクトされます。私はこれがJavaScriptを使って簡単に行うことができることを知っていますが、あなたのブラウザでJSをオフにすれば、それを簡単に回避できます。
ページ/コンテンツが配信される前にKentico 7でフィルタを実行する方法はありますか?Kenticoのリクエスト/ルートフィルタ7
私のシナリオでは、クエリ文字列パラメータを検証する必要があります。有効でない場合、クライアントは別のページにリダイレクトされます。私はこれがJavaScriptを使って簡単に行うことができることを知っていますが、あなたのブラウザでJSをオフにすれば、それを簡単に回避できます。
のようなCMSPages_PortalTemplateのイベントとそれ `sの基底クラスがあります。
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);
.
.
.
をしかし、私はわからないと私はそれ` sにないベストプラクティスを疑います。たぶん、あなたはあなたの問題とどんなクエリーストリングを、なぜ、どこで検証したいのかを記述することができます。
私があなたのところにいる場合は、「RandomRedirection」のような単純なWebパーツを作成します。バージョン8の~/CMSWebParts/General/RandomRedirection.ascx.cs
にあるこのWebパーツのファイルのパスを次に示します。 Webパーツコードでクエリ文字列パラメータをテストし、に応じてリダイレクトを行うことができます。ここで
は(申し訳ありませんが、私は私のコードは、このバージョンではなく、バージョン8でテストされていませんので、バージョン7がローカルにインストールされていない)RandomREdirectionのWebパーツからインスピレーションを得たコードの例です
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
}
あなたを入れてあなたのマスターページのトップゾーンにあるWebパーツとここに行きます。
希望すると便利です。
妥当性検査が必要な値があり、クエリ文字列から取得されます。検証が正しければページは正常に読み込まれ、そうでなければユーザーはリダイレクトされます。それはすべてあります。 – AnimaSola