2

作業中の MVC アプリのビューにフィールド検証を適用したいと考えています。例えば ​​-

  • フィールドの長さを 40 に制限する
  • 英数字と特殊文字のみを確認してください @#$%&*()-_+][';:?.,! 入力できます。

フィールドの長さを制限するために次を使用しました。

<div>
<%= Html.TextBoxFor(c => c.CompanyName, new { style = "width:300px", maxlength = "40" })%></div>

テキストボックスに英数字と特殊文字のみを入力できるようにするにはどうすればよいですか?

編集: モデルのプロパティを次のように変更しました

        [DataMember(EmitDefaultValue = false)]
        [Required(ErrorMessage="CompanyName is Required")]
        [StringLength(40, ErrorMessage = "Must be under 40 characters")]
        public string CompanyName { get; set; }

テストするために、必須であるためサーバーエラーが発生することを期待して、空白の CompanyName を保存してみました。ただし、空白の会社名が保存されます。何が欠けている可能性がありますか?

4

2 に答える 2

3

次のようなViewModelオブジェクトを作成するだけです。

class Company
{
    [Required]
    [StringLength(40)]
    [RegularExpression(@"someregexhere")]
    public string CompanyName { get; set; }
}

そして、ビューをそのモデルにバインドします。このようにして、サーバー側とクライアント側の両方の検証が可能になります。本当に簡単です。

@model Company

@using (Html.BeginForm()) {
    Html.EditorFor(x => x.CompanyName)

    <input type="submit" value="Save" />
}

ああ、この例ではRazor(MVC3)を使用していますが、MVC2は私が知る限りほとんど同じように機能します。

次に、ModelState.IsValidをチェックして、コントローラーの着信ViewModelを検証します。

于 2012-05-17T14:38:24.407 に答える
3

これは MVC 2.0 ですが、3.0 でも同様に機能し ます http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

データ注釈を調べて、モデルの検証を行うだけです

編集:

コントローラーのアクションには次のようなものが必要です

if(ModelState.IsValid)
{
//success logic
}
//failure logic
//return to view

あなたも必要になります

@Html.ErrorMessageFor(model => model.YourProperty)

エラーメッセージがスローされていることを確認するため。

記事を読んで、これを説明する方が他の人よりも優れています。

于 2012-05-17T14:35:04.363 に答える