2017-11-25 12 views
3

私の電話番号を検証しようとすると、誰も入力ボックスの中にランダムな文字を入力することはできません。私は邪魔にならず検証スクリプトを用意しています。これまでのところ私は、これは私のコントローラMVCでの検証の実装

[HttpPost]  
public ActionResult UpdatePhoneNumber(string phoneNumber) 
{ 
    if (ModelState.IsValid) 
    {                                                           
     return View(); 
    } 
} 

である。これは、私の見解である

<form role="form" action="#"> 
    @Html.AntiForgeryToken() 

    <div class="form-group"> 
     <label class="control-label"><b>Phone Number</b></label> 
     @Html.TextBoxFor(model => model.SMSPhoneNumber, new {@class = "form-control", @placeholder = "Enter Phone Number", @id = "phoneNumber", Name = "phoneNumber", data_val_required = "Please enter a phone number"}) 
     @Html.ValidationMessageFor(model => model.SMSPhoneNumber, null, new { @class = "text-danger" }) 
    </div> 
    <button type="button" data-dismiss="modal" class="btn dark btn-outline"> Cancel</button> 
    <button type="button" data-toggle="modal" id="" class="btn green" onclick="javascript: updateDatabase();">Submit</button> 
</form> 

[RegularExpression(@"^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$", ErrorMessage = "Not a valid Phone number")] 
[Display(Name = "Phone")] 
public string SMSPhoneNumber; 

または

[DataType(DataType.PhoneNumber)] 
public string SMSPhoneNumber; 

を私のモデル内のいくつかのことを試してみました検証はまだ機能していません。問題なの?

おかげ

答えて

2

あなたは、クライアント側の検証を取得しない理由は、あなたがnew { Name = "phoneNumber" }を使用してname属性を変更しているとあなたがphoneNumberの検証メッセージのプレースホルダ(SMSPhoneNumberのためだけのもの)を作成していないということです。

name属性を変更する必要はありません。また、data-val-*属性を追加する必要もありません(また、なぜid属性を変更するのか明確ではありません)。 HtmlHelperメソッドは、正しく使用された場合、常にモデルのバインディングと検証に正しいhtmlを生成します。

あなたが任意のサーバー側の検証を取得しない理由は、あなたがちょうどstringに、あなたのモデルに結合しないということです。

変更

@Html.TextBoxFor(m => m.SMSPhoneNumber, new { @class = "form-control", placeholder = "Enter Phone Number" }) 
@Html.ValidationMessageFor(m => m.SMSPhoneNumber, null, new { @class = "text-danger" }) 

を視野にコードとモデルを受信するPOSTメソッドを変更する(そのpublic class Company言うと仮定して)、その後、

[HttpPost] 
public ActionResult UpdatePhoneNumber(Company model) 
+1

も注意してくださいあなたは 'のonclick =" javascriptを持っている:updateDatabaseを(); 'これはあなたがAJAXを使用して提出することを示唆しています。この場合、コントローラに投稿する前に' .valid() 'をチェックすることによって、クライアント側の検証が正しく行われていなければクライアント側の検証はできません。 –

+0

それも含めて質問してみることができます必要に応じてレビューと修正を行います。 –

+0

編集しました。私が望むとおりにページを作成していますが、ここで問題となるのはそのすべての検証部分だけです。 – Draklin