ActionResult必須パラメーターでオプションのMVCルーティングパラメーター

ckb888

いくつかのアクションを持つコントローラー(製品)があり、必須パラメーター(編集、詳細、履歴)があるものと、null許容パラメーター(作成、検索)があるものがあります。オプションパラメータを使用したデフォルトルートはすべてのアクションにルーティングされますが、ユーザーが必須パラメータ(Product / History)を使用してコントローラ/アクションを指すURLを入力すると、エラーがスローされます。これを処理するのに最適な場所はどこですか?するべきか:

  1. 必須のURLパラメーターを持つものとして必須のwithパラメーターを持つアクションのルートを定義しますか?

     routes.MapRoute(  
               name: "ProductParamRequired",  
               url: "Product/History/{id}",  
               defaults: new { controller = "Product", action = "History"}  
           );  
    
  2. アクションを変更してオプションのパラメーターを設定し、不正な要求を返します。

    public ActionResult History(int? id)
        {
            if (id == null)
            {
                throw new HttpException(400, "BadRequest");
            }
    
  3. アプリケーションに500の内部サーバーエラーをスローさせ、それを(もちろんカスタマイズされたエラーページ)ユーザーに表示させますか?

ありがとう、そしてハッピーフライデー!

ジョンH

必要な場合は、絶対にルートの一部として必要にしてください。リクエストに期待するデータさえ含まれていない場合は、それを処理するという考えを楽しまないでください。アプリケーションのエッジで検証するのではなく、アプリケーションに入力した不良データを修正する方がはるかにコストがかかります。常にできるだけ早く入力を検証してください。

2 すべてのアクションと必要なすべてのパラメーターに対してこのパターンを複製することになるため、これは良い考えではありません。

3データを検証しようとさえしていないので、これは良い考えではありません。それはいつもトラブルを求めています。

1おそらくデフォルトルートのproduct/history。にフォールバックするため、問題ありません

余談ですが、属性ルーティングを利用RouteConfigすると、ルートを明示的に定義するときに、膨大な量のメンテナンスを行うことができなくなります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ASP.NET MVC5でのオプションパラメーターのルーティング

分類Dev

MVC代替ルーティングがオプションのパラメーターで失敗する

分類Dev

Laravelのオプションのルーティングパラメーター

分類Dev

SSRS必須パラメーターとオプションパラメーター

分類Dev

オプションの最初のパラメーターを使用したMVCルーティング

分類Dev

MVCルーティングのオプションの文字列パラメーターと醜いURL

分類Dev

複数のオプションパラメータルーティング

分類Dev

MVC5ルーティングとオプションのパラメーター

分類Dev

TypeScriptが必須パラメーターの後にオプションのパラメーターを必要とするのはなぜですか?

分類Dev

MVCオプションのボディパラメーター

分類Dev

MVC5属性ルーティングのオプションパラメータ「名前」とは

分類Dev

Laravelルーティングでオプションのパラメーターを省略できますか?

分類Dev

ASP.NET MVC5ルーティングオプションパラメーター

分類Dev

PHP:オプションと必須のパラメーターのスリムな組み合わせ

分類Dev

非推奨:必須パラメーター$ to_addrはオプションの後に続きます

分類Dev

JavaScript関数の必須パラメーターの間にオプションパラメーターを設定する方法

分類Dev

必須パラメーター$ xxxは、オプションパラメーター$ yyyの後に続きます

分類Dev

ビルダーパターンと多数の必須パラメーター

分類Dev

Angular2 +ルーティング-オプションのルートパラメータ

分類Dev

Http.RouteAttributeを使用したオプションのパラメーターのルーティング

分類Dev

Web API属性ルーティングのオプションパラメーター

分類Dev

AngularJS:オプションのパラメーターを持つURLを使用したルーティング

分類Dev

Flask - 複数のオプション パラメーターを使用したルーティング

分類Dev

オプションのパラメーターとクエリパラメーターを使用したWebApi属性ルーティング

分類Dev

複数のパラメーターMVCルーティング

分類Dev

複数のオプションパラメータを持つ関数へのWebAPIルーティング

分類Dev

Aspectjオプションのパラメーターバインディング

分類Dev

複数のオプションパラメータWebAPI属性ルーティング

分類Dev

オプションのパラメータを使用したRails4ルーティング?

Related 関連記事

  1. 1

    ASP.NET MVC5でのオプションパラメーターのルーティング

  2. 2

    MVC代替ルーティングがオプションのパラメーターで失敗する

  3. 3

    Laravelのオプションのルーティングパラメーター

  4. 4

    SSRS必須パラメーターとオプションパラメーター

  5. 5

    オプションの最初のパラメーターを使用したMVCルーティング

  6. 6

    MVCルーティングのオプションの文字列パラメーターと醜いURL

  7. 7

    複数のオプションパラメータルーティング

  8. 8

    MVC5ルーティングとオプションのパラメーター

  9. 9

    TypeScriptが必須パラメーターの後にオプションのパラメーターを必要とするのはなぜですか?

  10. 10

    MVCオプションのボディパラメーター

  11. 11

    MVC5属性ルーティングのオプションパラメータ「名前」とは

  12. 12

    Laravelルーティングでオプションのパラメーターを省略できますか?

  13. 13

    ASP.NET MVC5ルーティングオプションパラメーター

  14. 14

    PHP:オプションと必須のパラメーターのスリムな組み合わせ

  15. 15

    非推奨:必須パラメーター$ to_addrはオプションの後に続きます

  16. 16

    JavaScript関数の必須パラメーターの間にオプションパラメーターを設定する方法

  17. 17

    必須パラメーター$ xxxは、オプションパラメーター$ yyyの後に続きます

  18. 18

    ビルダーパターンと多数の必須パラメーター

  19. 19

    Angular2 +ルーティング-オプションのルートパラメータ

  20. 20

    Http.RouteAttributeを使用したオプションのパラメーターのルーティング

  21. 21

    Web API属性ルーティングのオプションパラメーター

  22. 22

    AngularJS:オプションのパラメーターを持つURLを使用したルーティング

  23. 23

    Flask - 複数のオプション パラメーターを使用したルーティング

  24. 24

    オプションのパラメーターとクエリパラメーターを使用したWebApi属性ルーティング

  25. 25

    複数のパラメーターMVCルーティング

  26. 26

    複数のオプションパラメータを持つ関数へのWebAPIルーティング

  27. 27

    Aspectjオプションのパラメーターバインディング

  28. 28

    複数のオプションパラメータWebAPI属性ルーティング

  29. 29

    オプションのパラメータを使用したRails4ルーティング?

ホットタグ

アーカイブ