6

モデルクラスのいくつかの属性のドロップダウンリストを生成したいと思います。私はmvc.netアプリケーションに取り組んでおり、ビューにかみそりエンジンを使用しています。これが私のクラスです:

public class present
{       
    public DateTime jour { get; set; }
    public int entree_mat_h { get; set; }
    public int entree_mid_h { get; set; }
    public int sortie_mat_h { get; set; }
    public int sortie_mid_h { get; set; }
    public int entree_mat_m { get; set; }
    public int entree_mid_m { get; set; }
    public int sortie_mat_m { get; set; }
    public int sortie_mid_m { get; set; }
    public string mac { get; set; }
    public string ip { get; set; }
}

たとえば、整数である属性ごとに0〜60の値を持つドロップダウンリストを表示したいとします。この場合、@ html.dropdownlistfor()は機能しますか?

4

3 に答える 3

8

あなたの見解では、可能な値のリストを宣言します。あなたの場合、0から60までです。

@{ var values = new SelectList(Enumerable.Range(0, 60)); }

DropDownListForその後、ヘルパーで使用できます

@Html.DropDownListFor(m => m.entree_mat_h, values)
@Html.DropDownListFor(m => m.entree_mid_h, values)
....
于 2012-08-22T09:54:05.277 に答える
0

はい。ただし、必要な値を使用してカスタム選択リストを渡す必要があります。

したがって、次のようなことを行います。

   var list = new List<SelectListItem>();

   for(int i=1; i < 61; i++)
   {
        list.Add(new SelectListItem{Text = i, Value = i});
   }

   var sl = new SelectList(items, "Value", "Text");

次に、それをモデルに渡す必要があります

次に、ビューで次のようにします。

 @Html.DropDownListFor(x => x.Quantity, @Model.Quantity)

またはそれらの線に沿った何か。

明らかに私は偽の名前を使用しているので、自分のモデルに合わせる必要があります。

于 2012-08-22T09:52:37.157 に答える
0

ソースからドロップダウンリストを作成するには、この拡張方法を使用します(キーと値に投影されるすべての値を選択します)。例

public static IEnumerable<SelectListItem> ToDropDown<TSource>(this IEnumerable<TSource> source, Func<TSource, string> keySelector, Func<TSource, string> elementSelector, Func<TSource,bool> selected)
        {
            if (source == null)
            {
                return new List<SelectListItem>();
            }
            return source.Select(c => new SelectListItem { Value = keySelector(c), Text = elementSelector(c), Selected = selected(c) }).ToList();
        }

viewBagを埋める

ViewBag.Languages = languageRepository().GetAll().ToList().ToDropDown(c => c.ID, c => c.Description, c => c.ID == "EN");

そして最後にかみそり

 @Html.DropDownList("ddLanguages", (IEnumerable<SelectListItem>)ViewData.Languages, "Please Select")
于 2012-08-22T09:54:20.197 に答える