在MVC中实现验证

时间:2017-11-25 23:11:34

标签: c# asp.net-mvc validation

尝试验证我的电话号码,以便没有人可以在输入框内输入随机字母。我确实有不引人注目的验证脚本。到目前为止,我已经在我的模型中尝试了一些内容,

[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();
    }
}

验证仍然无效,可能是什么问题?

由于

1 个答案:

答案 0 :(得分:2)

您未获得客户端验证的原因是您使用name更改了new { Name = "phoneNumber" }属性,并且您尚未为phoneNumber创建验证消息占位符(仅适用于SMSPhoneNumber name)。

在任何情况下都不应更改data-val-*属性。您也不应该添加id属性(并且不清楚为什么更改HtmlHelper属性)。如果使用正确,string方法将始终为模型绑定和验证生成正确的html。

您没有获得任何服务器端验证的原因是您没有绑定到您的模型,只是@Html.TextBoxFor(m => m.SMSPhoneNumber, new { @class = "form-control", placeholder = "Enter Phone Number" }) @Html.ValidationMessageFor(m => m.SMSPhoneNumber, null, new { @class = "text-danger" })

将视图代码更改为

public class Company

并更改POST方法以接收您的模型(假设其说[HttpPost] public ActionResult UpdatePhoneNumber(Company model) ),然后

df <- data.frame(before_weight=c(1,2,3,2,1),before_pain=c(2,2,1,3,1),after_weight=c(1,3,3,2,3),after_pain=c(1,1,2,3,1))