在ASP.NET WebApi中格式化uri模板字符串值

时间:2012-08-09 17:31:41

标签: asp.net asp.net-mvc asp.net-web-api

我有一个ASP.NET WebApi应用程序,它有一些控制器方法,希望某些字符串作为方法参数传递(声明为路由模板的一部分)。

在所有方法中,传入的字符串都是base64编码的 - 这意味着每个控制器方法在对它们执行任何操作之前必须对它们进行base64解码。虽然我显然可以让每种方法都能够轻松地完成这项工作,但我想知道在将字符串实际传递给控制器​​方法之前是否有办法执行解码。我认为这是一个动作过滤器或自定义格式化程序,但我对asp.net web api不熟悉,知道从哪里开始呢?

要点: 我有路由模板,如:{controller}/{encodedString}/whatever 其中{encodedString}始终是base64编码的字符串。 和控制器使用

等方法
GetWhatever(string encodedString)
{
  Base64Decode(encodedString);
  // do other stuff...
}

我想在实际调用控制器方法之前使用asp.net webapi管道的某些部分来解码{encodedString}。我应该从哪条路开始才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用ModelBinderAttribute创建自定义模型活页夹并将其附加到参数。在模型绑定器中,然后执行base64解码。

有关Web API检查中参数绑定的参考:

How WebAPI does Parameter Binding