如何在ASP.NET MVC中的路由中验证参数的值

时间:2018-07-02 15:01:42

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4

我正在使用C#在ASP.NET MVC中进行开发,并且有一个这样声明的操作:

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

我想验证参数FixedWidthHeight是客观地true还是false。如果不是,我将找不到操作,也不会出现错误,例如“错误参数值”。

我听说使用'constrains'参数可以验证这一点,但是如何验证呢?

很多时候,我们的客户写着https://.../ViewImage?ImageFileItemId= 6654&MaxWidth=800&MaxHeight=400&FixedWidthHeight=Trutes之类的东西。通常情况下,该操作会返回一个图像,在这种情况下,它将给出一个错误。这个想法是发送404,因为Google和其他网站认为该URL有效。因此对于Google,我们的页面是错误的。

1 个答案:

答案 0 :(得分:0)

如果要启用此方案,则应将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
    }
}