1

ここで理論的な質問。

プロパティの列挙型として設定したい2つの異なる値(オープン、クローズ)のみを受け入れることができるプロパティ「ステータス」があります。codefirst mvc アプリケーションでは、データ モデル、ビューモデル、またはその両方で列挙型を定義する必要がありますか?

私は列挙型をビューモデルの一部にすることに傾倒しており、このモデルの codefirst プロパティは列挙型の文字列値を格納するだけです。次に、オートマッパーを使用して 2 つの値を前後にマップします。ビューモデルの enum プロパティは、ラジオボタンとして表示されます。

考え?

4

2 に答える 2

1

場合によります。

data model1) (ビュー以外に)アクセスできる他のコードがある場合、おそらく、この Status プロパティを列挙型にする必要があります。このサードパーティのコードがあなたの論理を壊さないように。とにかく、今そのようなコードを持っていない場合でも、前方互換性のために enum を使用することをお勧めします: mabby あなたまたは他の開発者が将来それを追加します。これはベスト プラクティスです。私見、これは必須です。

2) ビューモデルで列挙型を使用するのはどうですか? 私見、これはオプションです。入力を検証したい場合は、おそらくコントローラーのアクションメソッドでサーバー上で行うことになるからです。ラジオボタンを使用する場合は、コントローラーで入力を検証する必要さえありません。あなたのビューでこれを使用してください:

@model path.YourViewModel
@using YourEnumNamespace;  /* where You defined Your Status enum */

@using (Html.BeginForm("YourMethod", "YourController", FormMethod.Post, null))
{
<fieldset>
    <div>
        @foreach (var enumValue in Enum.GetValues(typeof(Status)))
        {
            <div>
                @Html.Label(enumValue.ToString())
                @Html.RadioButtonFor(model => model.Title, enumValue)
            </div>
        }
    </div>
    <input type="submit" value="Save"/>
</fieldset>
}

上記のコードのように列挙値を列挙するだけです。

要約すると、ビューモデルで型を使用する必要はありませんがenum、前方互換性をenum考慮してデータモデルで型を使用することをお勧めします。

于 2013-10-09T14:14:47.800 に答える