我需要在服务器端创建链接时转换一些url参数。
示例:
@html.ActionLink("text","index","Home",null,new { id=Model.Id });
现在我必须转换id参数,以便我可以简单地转换它并将其传递给对象objectRoute参数,或者我可以简单地覆盖ActionLink.But问题是我必须在整个项目上进行重构。
所以我正在寻找拦截机制或处理机制的方法。
这有什么解决方案吗?
答案 0 :(得分:3)
您可以尝试使用ActionFilterAttribute:
public class ConversionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
var idValue = filterContext.RouteData.Values["id"];
var convertedIdValue = ConvertId(idValue);
var newRouteValues = new RouteValueDictionary(filterContext.RouteData.Values);
newRouteValues["id"] = convertedIdValue;
filterContext.Result = new RedirectToRouteResult(newRouteValues);
}
}
然后,您需要将该属性应用于您希望这种情况发生的操作:
[Conversion]
public ActionResult Index(int id)
{
// Your logic
return View();
}