1

更新 1

listboxforビューでリスト項目をレンダリングするために mvc ヘルパーを設定したいと考えています。を受け入れるヘルパーに 2 番目のパラメーターを渡す方法がわかりませんIENumerableSelectListItem SelectionList

 Html.ListBoxFor(model => model.SelectedDate, Model.DateList, new { })

モデルクラスにプロパティがありますが、

public IEnumerableSelectListItem  DateList { get; set; }

どういうわけか、コントローラー アクション メソッドからDateListを設定する必要があります。これにより、他のすべてのモデル プロパティが埋められ、ヘルパーがある部分ビューに渡されます。DateList は Enum DateListEnum から値を取得する必要があります

これを行う方法についてのアイデア。また、一度に 1 つのリスト項目が確実に選択されるようにする方法を教えてください...私はこれらすべてに本当に慣れていません..そして、これに取り組んでいるのにかなりの時間がかかりました...しかし、これまでのところ何も思いつきませんでした....

コントローラーアクションメソッドに以下のコードがあります。

model.DateList = getDateList();

このメソッドを呼び出す

public IEnumerableSelectListItem getDateList()

{

IEnumerableSelectListItem  values = Enum.GetValues(typeof(DateListEnum));

 //this one doesn't work because of casting issues and this is where i want to convert Enum Values to  IEnumerableSelectListItem

return values; 

 }

更新 2

リストボックスが機能し、以下のコードに基づいてUIに表示されます

` IEnumerable<SelectListItem> values = Enum.GetNames(typeof(ColumnFormattingDateFormats)).Cast<ColumnFormattingDateFormats>().Select(p => new SelectListItem()
            {
                Text = p.ToString(),
                Value = ((int)p).ToString()
            }).ToList();`

しかし今、私は他のいくつかの問題を抱えています、

私が使用している列挙型は

`public enum ColumnFormattingDateFormats : int 
{ 
[StringValue("Wednesday, March 14, 2001")]
 FULLDATE = 0, 
[StringValue("3/14")]
 MMDDWSLASH = 1,
 [StringValue("3/14/01")]
 MMDDYYWSLASH = 2,
 [StringValue("03/14/01")]
 MMDDYYWMMZEROPREFIXWSLASH = 3 
}`

そして私のヘルパーはこのように見えます、

Html.ListBoxFor(model => model.SelectedDate, Model.DateList, new { })

1> 選択した項目を listboxfor helper に渡すにはどうすればよいですか? [DataMember] public ColumnFormattingDateFormats SelectedDate{ get; set; } モデル クラス のプロパティを介して、選択した項目をヘルパーに渡す方法はあり ますか? まず、モデルクラスのデフォルトコンストラクターに渡し this.SelectedDate= ColumnFormattingDateFormats.FULLDATE; ています...しかし、何らかの理由で最初のパラメーターmodel => model.SelectedDateに問題があります..null例外をスローします...

[StringValue]2>列挙型がexの列挙型テキストではなく、UIリストボックス要素に表示されるようにするにはどうすればよいですか。FULLDATE は表示されるべきではなく、代わりに「2001 年 3 月 14 日水曜日」が表示されるべきですか?

3> livequery を使用せずに 1 つの項目が確実に選択されるようにするにはどうすればよいですか?

私の頭脳は今、すべて焼き尽くされています....誰か方向性はありますか?????

4

1 に答える 1

1

どうですか:

Enum.GetValues(typeof(MyEnum))
.Cast<MyEnum>()
.Select(p => new SelectListItem()
                    {
                        Text = p.ToString(),
                        Value = ((int) p).ToString()
                    })
                .ToList();
于 2012-12-25T12:55:40.480 に答える