【发布时间】:2011-08-24 21:21:46
【问题描述】:
我们有一个第三方控件,它两次发布相同的表单参数。我们现在想修补问题并通知他们,以便我们可以继续使用他们的控件。如何修改发布到 MVC 控制器的操作方法的表单参数?
public ActionResult Index()
{
var httpParams = this.HttpContext.Request.Params;
if (httpParams["form_element"] != null ) {
httpParams["form_element"] = "some new value"; // NotSupportedException: Collection is read-only
}
return new CustomActionResult(this);
}
尝试更改请求参数不起作用 - 它会抛出 NotSupportedException。有没有办法重定向这个请求或者我们需要一些自定义的 HTTPHandler/Module 来支持这个变化?我们希望在处理响应之前控制请求正文值。
【问题讨论】:
-
我不认为你可以。但即使你可以,你打算在更新后对 request.Params 集合做什么?您可能需要考虑使用特定模型参数和自定义模型绑定器,以便控制它的创建方式。
-
Ben - 我尝试使用自定义模型绑定器来修改 FormCollection 参数,但这无济于事,因为专有的 CustomActionResult 没有使用模型 - 它只使用 Request.Form 所以它帮不上忙。
标签: c# asp.net-mvc asp.net-mvc-3 http-post