Сопоставить данные HttpPost с моделью в MVC - Как получить данные с "-" в имени? - PullRequest
2 голосов
/ 16 января 2012

Если у меня есть контроллер:

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

Третья сторона публикует данные для этого метода:

abc-xyz=testdata

Одним из способов будет использование:

Request.Params["abc-xyz"]

Однако в случае, когда запрос может содержать вредоносный код, если какой-либо параметр запроса содержит какой-либо проблемный код, IIS выдаст HttpRequestValidationException, как только будет вызван Request.Params[""].

Теперь,вместо того, чтобы отключать эту проверку везде, я бы хотел отобразить опубликованные данные в моей модели.Таким образом, если «потенциально вредоносный код» содержится в любом параметре, который не является «abc-xyz», мое приложение не выдаст HttpRequestValidationException.Однако он проверит используемые параметры и выдает HttpRequestValidationException, если данные , к которым получен доступ , потенциально вредоносны.

Как мне это сделать, если опубликованные данные имеют дефис / дефис вимя?

Я пробовал несколько вариантов, в том числе:

public class CustomModel
{
    [Required]
    public string abc_xyz
}

1 Ответ

2 голосов
/ 16 января 2012

Вы должны написать свой собственный ModelBinder в этом случае, который преобразует значения из запроса в значения, необходимые для CustomModel.

Чтобы отменить проверку запроса, вы можете отключить ее с помощьюValidateInputAttribute на вашем контроллере.

...