Как проверить значение параметра в маршрутах в ASP.NET MVC - PullRequest
0 голосов
/ 02 июля 2018

Я занимаюсь разработкой в ​​ASP.NET MVC с C #, и у меня есть действие, объявленное так:

public FileResult ViewImage (int ImageFileItemId, 
                             int MaxWidth, 
                             int MaxHeight, 
                             bool FixedWidthHeight, 
                             string JpegQuality)

Я хотел бы проверить, что параметр FixedWidthHeight объективно true или false. Если это не так, я не найду действия, и не будет ошибки, например, «error param value».

Я слышал, что с помощью параметра 'constrains' вы можете это проверить, но как?

Часто наши клиенты пишут такие вещи, как https://.../ViewImage?ImageFileItemId= 6654&MaxWidth=800&MaxHeight=400&FixedWidthHeight=Trutes. Обычно действие возвращает изображение, в этом случае оно выдает ошибку. Идея состоит в том, чтобы отправить 404, потому что Google и другие веб-сайты распознают URL как действительный. Так что для Google наша страница неправильная.

1 Ответ

0 голосов
/ 02 июля 2018

Если вы хотите включить этот сценарий, вы должны объявить параметр FixedWidthHeight как строку и самостоятельно проанализировать его как логическое значение.

В псевдокоде:

public FileResult ViewImage (int ImageFileItemId, 
                             int MaxWidth, 
                             int MaxHeight, 
                             string FixedWidthHeight, 
                             string JpegQuality)
{
    bool fixed;

    if (Boolean.TryParse(FixedWidthHeight, out fixed))
    {
        // Process the request normally
        // Where the 'fixed' variable holds the parsed value
    }
    else
    {
       // Return a 404, 403, 'parameter error' or something else
    }
}
...