2

曜日をEnum表すフラグがあり、平日、週末、毎日、または曜日がないことを示すいくつかの追加の値があります。

は次のEnumとおりです。

[Flags]
public enum DayOfWeek : short
{
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64,
    Weekday = 62,
    Weekend = 65,
    Everyday = 127,
    None = 0
}

DayOfWeekのタイプのプロパティを持つビューモデルもありますDayOfWeek

私のビューでは、曜日ごとにチェックボックスを作成し、保存された日に基づいてボックスを適切にチェックする必要があります。

これどうやってするの?

4

3 に答える 3

7

良い解決策を見つけました。

これが私が思いついたものです:

@foreach (DayOfWeek item in Enum.GetValues(typeof(DayOfWeek)))
{
    if (0 < item && (item <= DayOfWeek.Friday || item == DayOfWeek.Saturday))
    {
        @Html.Label("DayOfWeek", item.ToString())
        @Html.CheckBox("DayOfWeek", (Model.DayOfWeek.HasFlag(item)), new { value = item })
    }
}

ループ内の条件ステートメントは、実際の日数のみが表示されるようにするためのものです。

これは私の目的のために機能し、この概念は他の列挙に簡単に適用できます。特定の実装にはいくつかの変更が必要ですが、アイデアはわかります。

于 2013-09-27T17:33:41.707 に答える
0

次のように繰り返すことができますEnum

foreach (var val in typeof(DayOfWeek).GetEnumNames())
               ....

また、 a をPars元に変換することもできstringますEnum

var day = Enum.Parse(typeof(DayOfWeek) , yourString);

yourstringの名前など、何でも構いませんcheckbox

あなたの問題とプロジェクトのアーキテクチャについては詳しくわかりません。これらのオプションを問題に適応させるのはあなた次第です。これが役立つことを願っています。

于 2013-09-27T17:31:53.410 に答える
-1

これはかなり手動のプロセスです...たとえば、日曜日が選択されているかどうかを確認するには:

bool isSunday = (dayOfWeekEnum & DayOfWeek.Sunday) == DayOfWeek.Sunday;
于 2013-09-27T17:32:01.270 に答える