2017-01-10 9 views
1

今私はこれを持っており、それはすべて正常に動作します。ユーザーは月を選択できるドロップダウンリストを作成するにはどうすればよいですか?

PossibleExpirationMonths = creditCardInterpreter.GetPossibleMonths() 

GetPossibleMonths方法:

public List<dynamic> GetPossibleMonths() 
    { 
     return new List<dynamic>() 
     { 
      new {Display = "01 Jan", Value = 1 }, 
      new {Display = "02 Feb", Value = 2 }, 
      new {Display = "03 Mar", Value = 3 }, 
      new {Display = "04 Apr", Value = 4 }, 
      new {Display = "05 May", Value = 5 }, 
      new {Display = "06 Jun", Value = 6 }, 
      new {Display = "07 Jul", Value = 7 }, 
      new {Display = "08 Aug", Value = 8 }, 
      new {Display = "09 Sep", Value = 9 }, 
      new {Display = "10 Oct", Value = 10 }, 
      new {Display = "11 Nov", Value = 11 }, 
      new {Display = "12 Dec", Value = 12 } 
     }; 
    } 

とどのように私はそれを表示しています:

@Html.DropDownListFor(model => model.ExpirationMonth, new SelectList(Model.PossibleExpirationMonths, "Value", "Display"), new { @class = "form-control" }) 

私はに実行している問題は、私はメソッドをテストしようとすると、ダイナミックの表示と値のプロパティにアクセスします。

returnedList.First().Display 

私はエラーが発生します。 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'オブジェクト'に '表示'の定義が含まれていません

ここでダイナミクスを使用する理由は、このような要素を含むコンテナクラスを作成する必要がないためです情報の量はほとんどありません。それはちょうど肥大を作り、私はクリーナーになるつもりです。

ご意見/ご提案はありますか?

+0

あなたはどのように 'returnedList'に入力していますか? – stuartd

+1

さて、あなたはそんな気がして申し訳ありません。あなたが本当にコードの行を減らしたいのであれば、代わりに 'KeyValuePair 'を使用してください。 'List 'も同じように失敗しましたか? –

+0

...一日の終わりに、私は20年間生きてきましたが、その目的のためにクイッククラスを書くことに間違いはありません。これは原子力過剰思考です。 –

答えて

2

問題は、.First()は常にタイプObjectを返します。試してみることができます:

((dynamic)returnedList.First()).Display 

私は、ホイールを少し改造しているかもしれないと思います。 DateTimePickerなどのコントロールを使用していないのはなぜですか?あなたが望むことは、DateTime(具体的にはDateTime.Month)のプロパティです。ウェブの場合は、this solutionがうまくいきます。

+0

Mmmm、First()は質問のために単純化しようとした私の方法でした。私はまだアクセスできません。オブジェクトを動的にキャストオフにしてください。 –

関連する問題