验证路由值asp net mvc

时间:2016-07-28 06:55:57

标签: .net asp.net-mvc validation routes asp.net-mvc-routing

我想在执行控制器操作之前验证url。 用户使用url运行应用程序,如下所示:

https://appAddress/appAdress2/{first}/?secondId=ASD&thirdId=FGH&fourthId=123

"first" and "secondId" values are mandatory and they are string.
"thirdId" and "fourthId" are optional and "thirdId" is string and "fourthId" is int.

我可以这样做,例如使用attibute还是应该检查控制器操作中的值?

public ActionResult MyAction()
{
//todo: validation
}

我使用ASP.NET MVC 5

1 个答案:

答案 0 :(得分:0)

验证请求的最简单方法是,所有必要的信息都是在您的操作方法中进行检查。

public ActionResult MyAction(string first, string secondId, string thirdId, string fourthId)
{
    if (/* parameters are not valid */)
    {
        // Take invalid action...
        throw new ArgumentException("parameters are invalid");
    }
}

以上将抛出异常,(只要您的错误页面在web.config中配置)将显示错误页面。一般来说,出于安全原因,您不应告知用户发生了特定错误。

默认值提供程序自动将路由值和/或查询字符串值传递给请求。您需要做的就是确保名称(可能还有数据类型)与路由/查询字符串中的名称相匹配。