2

私は EF-CF を使用しており、次のエンティティがあります。

国、企業

企業には、StringLength 属性と最小および最大制限 (最小 3 文字、最大 3 文字、国 ID はISO-Alpha-3 )を持つ CountryId というプロパティがあります。ユーザーが会社を作成する必要がある場合、使用可能なすべての国を含む html 要素を表示します。これは完璧です!

ただし、フォームに対して jquery バリデーターを実行すると、選択されたオプションの値の長さではなく、選択された 3 つのオプションがチェックされます。

国モデルに StringLengthAttribute が必要ですが、削除できません。

呼び出しで StringLengthAttribute を「削除」または「非表示」にしたいと考えています:
@Html.ValidationMessageFor(model => model.CountryId)

ありがとう!

4

2 に答える 2

1

私はあなたの質問を理解していると思います。Company考えられる解決策は、エンティティを直接使用するのではなく、ViewModel を使用してビューに渡すことです。これにより、エンティティ モデルを変更せずにデータ注釈を追加または削除できます。CompanyViewModel次に、新しいデータをCompanyエンティティ モデルにマップして、データベースに保存します。

たとえば、Companyエンティティは次のようになります。

public class Company
{
    public int Id { get; set; }
    [StringLength(25)]
    public string Name { get; set; }
    public int EmployeeAmount { get; set; }
    [StringLength(3, MinimumLength = 3)]
    public string CountryId {get; set; }
}

MVC プロジェクトでは、ViewModel をCompanyエンティティと同様に構築できます。

public class CompanyViewModel
{
    public int Id { get; set; }
    [StringLength(25, ErrorMessage="Company name needs to be 25 characters or less!")]
    public string Name { get; set; }
    public int EmployeeAmount { get; set; }
    public string CountryId { get; set; }
}

ViewModel を使用すると、不要なマークアップでエンティティをオーバーロードすることなく、より多くのビュー プレゼンテーション指向の注釈を追加できます。

これが役立つことを願っています!

于 2013-05-16T18:56:51.033 に答える
0

準備!

HTML コントロールのルールを削除します。

$("#@(Html.HtmlIdNameFor(model => model.CountryId))").rules("remove", "rangelength");

「rangelength」は、StringLengthAttribute の jquery 検証規則です。

"Html.HtmlIdNameFor" は、ASP.NET MVC によって生成された "Id" を取得するためのヘルパーです。
asp.net MVC EditorForによって生成された HTML ID を取得する方法を確認してください。

于 2013-05-17T21:09:17.900 に答える