1

私のモデルクラスにはブールプロパティがありますDoNotEmail

ビューを作成するために指定されたUIデザインでは、チェックボックスの意味が逆になっています。つまり、チェックボックスの横のラベルには。と表示されます"Send Email"

通常、私はこのようなチェックボックスを追加します:@Html.CheckBoxFor(model => model.DoNotEmail)しかし、明らかにこれは間違った方法です。

このチェックボックスのカスタムプロパティを使用して別のビューモデルを作成する必要がありますか、それとも次のような賢い方法があります@Html.CheckBoxFor(model => !model.DoNotEmail) か?(明らかに機能しません)?

4

2 に答える 2

3

エンティティをビューに直接渡すことは決して良い考えではありません。DBスキーマが変更された場合は、すべてのビューを調べて更新する必要があります。ビューに必要なデータのみを作成しViewModelて渡してからDoNotEmail、コントローラーでプロパティをマップすることをお勧めします。そうすれば、モデル/ビュー間の抽象化を維持し、ビューをシンプルに保つことができます。

public void ViewModel
{
    [DisplayName("Send Email")]
    public bool SendEmailNotification { get; set; }
}

意見

@model ViewModel

@Html.CheckBoxFor(m => m.SendEmailNotifications)

コントローラ

public void Post(ViewModel model)
{
    var entity = ...;
    entity.DoNotEmail = !model.SendEmailNotification;
}
于 2012-07-12T12:02:50.213 に答える
2

回避策と呼ばれる可能性のある最も簡単な方法は次のとおりです。

DontEmailを非表示の値にします。そして、チェックボックスを作成します。jqueryイベントをそれにバインドし、選択したら、DontEmailの値を反転します。これを説明するためにコードを入力する必要がないことを願っています。必要に応じてお知らせください。

于 2012-07-12T11:56:47.357 に答える