2017-11-25 170 views
3

试图验证我的电话号码,以便任何人都不能在输入框内输入随机字母。我确实有不引人注意和有效的脚本。到目前为止,我已经尽了模型中的几件事情,在MVC中实现验证

[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; 

这是我的看法

<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> 

这是我的控制器

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

的验证仍然无法正常工作,会发生什么是问题吗?

感谢

回答

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