0

私はEntity Frameworkを使用しており、tblAuthorMasterタイプのビューモデルを強くタイプするビューを1つ持っています。Post ModelState では、次のエラーが返されます。

ステータスに値「0」は無効です。

ここで、Status は DB/EF のブール データ型であり、ビューではドロップダウン (TEXT="active/inactive", VALUE="1/0") であるため、フォームを投稿するたびに上記のエラー メッセージが表示されていました。

この問題を解決するためにいくつかの解決策を試しましたが、適切に機能していないようです。

以下は私のコードベースです:

ここで、tblAuthorMaster は EF クラスであり、AuthorModel は私のカスタム クラスであり、カスタム検証やその他のものに使用しています。

    [MetadataType(typeof(AuthorModel))]
    公開部分クラス tblAuthorMaster { }

    パブリック クラス AuthorModel
    {
        [必須(ErrorMessage = "*")]
        public string AuthorName { get; 設定; }
        [必須(ErrorMessage = "*")]
        public bool ステータス { get; 設定; }        

    }

前もって感謝します。

4

1 に答える 1

1

これが適切に機能するには、ドロップダウンの VALUE が であり、 ではない必要がtrue/falseあり1/0ます。ドロップダウンを生成する方法を示していないため、助けるのは難しいですが、次のようになります。

<%= Html.DropDownListFor(
    x => x.Status,
    new[] 
    {
        new SelectListItem { Value = "true", Text = "active" },
        new SelectListItem { Value = "false", Text = "inactive" },
    }
) %>

また、2 つの可能な値を持つドロップダウンを使用するポイントは何ですか? HTML には、この目的のためにチェックボックスが用意されています。

<%= Html.CheckBoxFor(x => x.Status) %>

最後に、質問でビューモデルと呼んでいるものは、ビューモデルではありません。これは、自動生成された EF ドメイン モデルです。ビューモデルは、特定のビューの要件に合わせて特別に設計するクラスであり、一部のウィザードによって自動生成されるわけではありません。

于 2012-09-24T07:55:54.723 に答える