Şu anda basit bir sorun üzerinde çalışıyorum: Yetkilendirme filtresimde koşullardan biri karşılanmadığı takdirde birkaç şey olup olmadığını kontrol ediyorum. Sorgu dizesindeki belirli değerleri kaldırın ve kullanıcıyı ilgili URL'ye yönlendirin. Ancak, bu bana istediğimden daha fazla sorun veriyor. Ben sorgu dizeleri sıyırma ve yeni url yönlendirmez girişiminde ediyorum benim RedirectToCleanUrl olarakMVC3'te querystring'den bir değeri kaldırın ve ortaya çıkan URL'ye yönlendirin
public void OnAuthorization(AuthorizationContext filterContext)
{
if (!SomeCondition()) {
RedirectToCleanUrl(filterContext);
}
}
: Bu şuna benzer. Bu şuna benzer:
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);
}
Öncelikle tüm çalışmıyor ve yaptım bile, çirkin. Daha iyi bir yol olmalı, değil mi? Burada neyi özlüyorum?