Tôi đang làm việc trên một vấn đề đơn giản: trong bộ lọc ủy quyền của tôi Tôi đang kiểm tra một vài điều nếu một trong các điều kiện không được đáp ứng, tôi cần xóa các giá trị nhất định khỏi chuỗi Truy vấn và chuyển hướng người dùng đến URL kết quả. Tuy nhiên, điều này là cho tôi một vài vấn đề hơn tôi muốn. Có vẻ như sau:Xóa giá trị khỏi chuỗi truy vấn trong MVC3 và chuyển hướng đến URL kết quả
public void OnAuthorization(AuthorizationContext filterContext)
{
if (!SomeCondition()) {
RedirectToCleanUrl(filterContext);
}
}
Trong RedirectToCleanUrl, tôi đang xóa chuỗi truy vấn và chuyển hướng chúng đến url mới. Có vẻ như sau:
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);
}
Trước hết, nó không hoạt động và ngay cả khi nó đã làm, nó xấu xí. Phải có một cách tốt hơn, phải không? Tôi đang thiếu gì ở đây?