Цель: У меня есть URL-адрес, подобный http://localhost:55830/shop/116_news
- помимо прочего, у фильтра есть задача изменить URL-адрес на http://localhost:55830/shop/news
Я пытался:
filterContext.RouteData.Values[ActionFilter.Value] = "/shop/" + StringHelper.RemoveDiacritics(value.Value.ToLower());
filterContext.ActionArguments[ActionFilter.Value] = "/shop/" + StringHelper.RemoveDiacritics(value.Value.ToLower());
filterContext.HttpContext.Request.Path = "/shop/" + StringHelper.RemoveDiacritics(value.Value.ToLower());
Ни один из указанных выше URL-адресов изменений во время OnActionExecuting
Класс фильтра всего действия:
public class ValueUrlFilterAttribute : ActionFilterAttribute
{
private readonly IValueTypeRepository repositoryValueType;
public ValueUrlFilterAttribute(IValueTypeRepository repoValueType)
{
repositoryValueType = repoValueType;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string v = filterContext.RouteData.Values[ActionFilter.Value] as string;
List<string> vInfo = ActionFilter.GetList(v);
int valueId = ActionFilter.GetValueId(vInfo);
string valueName = ActionFilter.GetValueName(vInfo);
ValueType value = repositoryValueType.GetValueByValueId(valueId);
if (value.Value.ToLower() == valueName)
{
object param;
filterContext.RouteData.Values[ActionFilter.Value] = "/shop/" + StringHelper.RemoveDiacritics(value.Value.ToLower());
filterContext.ActionArguments[ActionFilter.Value] = "/shop/" + StringHelper.RemoveDiacritics(value.Value.ToLower());
filterContext.HttpContext.Request.Path = "/shop/" + StringHelper.RemoveDiacritics(value.Value.ToLower());
if (filterContext.ActionArguments.TryGetValue("value", out param))
{
filterContext.ActionArguments["value"] = value;
}
base.OnActionExecuting(filterContext);
}
}
}
Я не хочу перенаправлять на другое действие, я хочу перейти надействие, которое я первоначально назвал
PS Отправка нового аргумента filterContext.ActionArguments["value"] = value;
отлично работает!
Выпуск Я не знаю, как изменить http://localhost:55830/shop/116_news
до http://localhost:55830/shop/news
Спасибо!