0

私はMVC3のチュートリアルを行っていますが、ヘルパー@ Html.ActionLink(genre.Name、 "Browse"、new {genre = genre.Name})に出くわしました。

これで、値が何をするのか、3番目の値がルートパラメータ値であることがわかりましたが、この種の構文を目にしたのはこれが初めてで、何らかの理由で本当に困惑しています。

私が正確に意味するのは、新しい{genre=genre.Name}です。オブジェクト/型宣言の前に「new」があることを理解しましたが、今回は単に「new」キーワードと中括弧です。これはどの程度正確に処理されますか?

4

3 に答える 3

2

構文は匿名型new { prop = val }を作成します。これは、クラスとインスタンスをすべて1つのショットで宣言することを除いて、クラスのインスタンスを作成することと本質的に同じです。一部の人々は、匿名型は静的に型付けされていないか、型安全ではないと考えています。これは真実ではありません。プロパティのタイプは、割り当てられた値から推測されます。この構造は、MVCおよびlinqで頻繁に使用されます。

この構文はMVCに固有のものではないことに注意してください。便利な場所ならどこでも使えます。私は日常のコーディングで匿名型をかなり使用しています。

于 2012-11-27T22:33:53.910 に答える
1

簡単です。最初のパラメータは表示したいリンクなので、Rockgenre.Nameに対応できます。2番目の引数は、、 3番目の引数はControllerクラスです。最後のパラメーターは、匿名オブジェクトの形式のルート値です(この場合、MVCエンジンは匿名オブジェクトを使用します)。したがって、あなたの(メソッド)は引数を取ります。actionactionstring

例:「Home」はユーザーに表示されるリンク(最初の引数)、Home(2番目の引数)はクラスactionへの(メソッド)であり、引数を取ります。Controllerstring

class HomeController
{
  public ActionResult GenreAction(string genre)
  {

  }
}

リクエストすると、Home/GenreAction/genre

于 2012-11-27T22:33:03.633 に答える
0

これは、匿名タイプと呼ばれるC#言語の機能であり、誤解しない限り、C#3.5で導入されました。

于 2012-11-27T22:32:10.450 に答える