将HttpPost数据映射到MVC中的模型 - 如何在名称中使用“ - ”捕获数据?

时间:2012-01-16 19:20:55

标签: asp.net-mvc asp.net-mvc-3 model-view-controller iis http-post

如果我有控制器:

[HttpPost]
public ReturnType ControllerMethod(CustomModel c)
{
...
}

第三方正在向此方法发布数据:

abc-xyz=testdata

一种方法是使用:

Request.Params["abc-xyz"]

但是,如果请求可能包含恶意代码,如果任何请求参数包含一些有问题的代码,则只要HttpRequestValidationException被调用,IIS就会抛出Request.Params[""]

现在,我不想在任何地方关闭验证,而是将发布的数据映射到我的模型。这样,如果“潜在恶意代码”包含在任何不是“abc-xyz”的参数中,我的应用程序将不会抛出HttpRequestValidationException。但是,它会检查使用过的参数,如果访问数据可能是恶意的,则抛出HttpRequestValidationException

如果发布的数据名称中有破折号/连字符,我该怎么做?

我尝试了一些变体,包括:

public class CustomModel
{
    [Required]
    public string abc_xyz
}

1 个答案:

答案 0 :(得分:2)

在这种情况下,您应该编写自己的ModelBinder,将请求中的值转换为CustomModel所需的值。

要完成请求验证,您可以使用控制器操作上的ValidateInputAttribute将其关闭。