私は、コントローラのアクションメソッドにURLからパラメータとしてデータを送る方法を知っています。ここで私はどのようにURLからコントローラのフィールドにデータを送ることができますか?URLからコントローラのフィールドにデータを渡す方法は?
public MyAwesomeController : Controller {
public string SectionCode { get;set; }
}
とのルートを定義してみましょう:
routes.MapRoute(
name : "AwesomeRouter",
url : "{code}/{action}",
defaults: new {controller = "MyAwesome", action = "Index", /* What to do here?*/}
);
私はSectionCodeはURLから{}のコードで満たされたいです。実装することは可能ですか?
これは動作しません。ルーティングとは、URLを取り出し、適切な*メソッド*と照合して呼び出すことを意味します。 'sectionCode'をアクションのパラメータとして宣言し、それを' SectionCode'プロパティに代入することができます。コントローラーのファクトリーまたは呼び出し側をカスタマイズして目標を達成することはできますが、その努力やリスクに値するとは思えません。 – haim770
これは動作しません。ルーティングはURLと特定のアクションを一致させます。ただし、コントローラのカスタム属性を作成し、そのパラメータを検索してプロパティを設定することもできます。しかしそれはあまり優雅でも効率的でもありません。 –
このようなコントローラのプロパティを持つのは悪い設計です。コントローラはリクエストのライフサイクルを持ちます(リクエストごとにインスタンス化され、処理されます)ので、コントローラにプロパティを設定することはとにかく意味がありません。アクションは、アクション内で起こっていることに必要なコンテキスト(この場合は 'code'値など)を受け入れる必要があります。ちょうどアクションパラメータとしてそれを受け入れて、それを1日と呼んでください。 –