2009-03-17 44 views
0

MVC SelectListの項目を値ではなくテキストで選択できる単純な拡張メソッドを作成しようとしています。MVC拡張メソッド

これは私が思いついたものですが、デバッグ中にアイテムが選択されているものの、返されたSelectListにはselected = falseのアイテムがすべて含まれています。

アイデア?

public static SelectList SelectByText(this SelectList list, string TextValue) 
     { 
      foreach (var item in list) 
      { 
       if (item.Text == TextValue) 
       { 
        item.Selected = true; 
       } 
      } 
      return list; 
     } 
+0

Selectedプロパティがすべてfalseであることをどのように証明することができますか?これは、UI出力やデバッガでオブジェクトを直接調べて見たことが原因ですか?その結果をどのように得ることができるかを見るのは難しいです。 – AnthonyWJones

+0

if(item.Text == TextValue){}内の項目は、値が一致したときにtrueに設定された選択属性を持っていますが、デバッガ内の全体的なコレクションでは項目のプロパティはfalseに設定されています。私はここで何が起こっているのか理解できませんか? –

答えて

2

とにかく、声明

はそれを確実にするためならば、あなたを満たす複数のアイテムを持っていると思われる代わりに、値

の彼の文章上の項目を選択しようとしているのは賢明ではありません唯一つの項目は、あなたがこのように条件 を満たしたときにブレークを置くことができ、選択されます。

if(item.Text == TextValue) 
{ 
    item.Selected = true; 
    break; 
} 

歓声