10
一見簡単な問題に取り組んでいます:私の認証フィルタで、条件の1つが満たされていない場合、私はいくつかをチェックしています。クエリ文字列から特定の値を削除し、結果のURLにユーザーをリダイレクトします。しかし、これは私が望むよりもいくつか問題が増えています。私は、クエリ文字列を除去し、新しいURLにリダイレクトしようとしてる私のRedirectToCleanUrlでMVC3のクエリ文字列から値を削除し、結果のURLにリダイレクト
public void OnAuthorization(AuthorizationContext filterContext)
{
if (!SomeCondition()) {
RedirectToCleanUrl(filterContext);
}
}
:それは次のようになります。
private void RedirectToCleanUrl(AuthorizationContext filterContext)
{
var queryStringParams = new NameValueCollection(filterContext.HttpContext.Request.QueryString);
// Stripping the key
queryStringParams.Remove("some_key");
var routeValueDictionary = new RouteValueDictionary();
foreach (string x in queryStringParams)
{
routeValueDictionary.Add(x, queryStringParams[x]);
}
foreach (var x in filterContext.RouteData.Values)
{
routeValueDictionary.Add(x.Key, x.Value);
}
filterContext.Result = new RedirectToRouteResult(routeValueDictionary);
}
最初にすべて消えてしまっても、醜いです。より良い方法が必要でしょう、そうですか?私はここで何が欠けていますか?ここで