2

我只是想知道用户可能通过意外查询请求的情况。假设我有控制器动作

  public ViewResult Details(int id)
        {
            Description description = db.Descriptions.Find(id);
            return View(description);
        } 

浏览器中的理想查询将是/admin/Details?id=1. 如果用户输入id=-1id=a或任何其他意外输入会怎样。如何处理?

4

1 回答 1

4

为了保证数值,你可以添加 id = @"\d+"路由约束,只有当请求是数值时你的动作才会被击中id,否则它会返回http not found;

在所有其他情况下,您应该始终检查用户输入,如下所示:

public ActionResult Details(int id)
{
    Description description = db.Descriptions.Find(id); 

    if(description == null)
    {
          return new HttpStatusCodeResult(404);
    }

    return View(description);
}

并且用户将被通知他请求的资源具有无效标识符

于 2012-08-08T09:50:17.357 回答