我想在执行控制器操作之前验证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
答案 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中配置)将显示错误页面。一般来说,出于安全原因,您不应告知用户发生了特定错误。
默认值提供程序自动将路由值和/或查询字符串值传递给请求。您需要做的就是确保名称(可能还有数据类型)与路由/查询字符串中的名称相匹配。