2

ユーザーが予期しないクエリを介して要求する可能性がある状況について疑問に思っています。コントローラーアクションがあるとします

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

ブラウザでの理想的なクエリは/admin/Details?id=1. ユーザーがid=-1またはid=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 に答える