读取操作筛选器属性中不存在的操作原型中的参数



我正在使用Ajax发送表单,它有两个输入。接收操作只需要使用传递的值之一。一个ActionFilterAttribute需要使用另一个参数。

出于这个原因,我把我的动作写成

[AttributeImWriting]
public ContentResult Get(Guid value0) //[...]

但是当我尝试做时,在我的动作过滤器中

context.ActionArguments["value1"]

我得到一个例外,因为参数不存在。

System.Collections.Generic.KeyNotFoundException:"字典中不存在给定的键'value1'。

如果我将动作的原型更改为

public ContentResult Get(Guid value0, string value1) //[...]

然后我可以从我的 filterAttribute 中读取value1

所以问题是:ActionFilterAttribute中,我如何读取由表单发送的参数,但该参数不存在于应用过滤器的操作的原型中?

我也尝试使用RouteData.Values但它并没有更好。

如果你使用 POST 将值发送到控制器端,在自定义ActionFilterAttribute中,你可以从Form属性中获取参数:

var value1 = context.HttpContext.Request.Form["value1"].ToString();

如果使用Get将值发送到控制器端,则可以从属性中获取参数QueryString然后拆分并获取每个项目:

var querystring = context.HttpContext.Request.QueryString;

最新更新