检查用户输入是否以两种可能性之一开始

时间:2016-03-09 16:19:51

标签: c# asp.net-mvc asp.net-mvc-5

我有一个客户将输入某些数据的页面,但是,在其中一个字段中,输入应该只以'SWG ...''MH ......'开头。 。除此之外,SWG应该包含7个数字,MH应该包含5.

我对此很新,所以任何帮助都将不胜感激。我的代码是下面的。

public partial class VehicleRegistration
{
    [Required]
    [Display(Name = "User Email:")]
    public string User_Email { get; set; }


    [Required] //This is the section where input should only begin with MH or SWG
    [Display(Name = "Serial No:")] 
    public string Serial_No { get; set; }

    [Required] 
    [StringLength(16, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 16)]
    [Display(Name = "Control Panel M Number:")]
    public string IMEI_No { get; set; }

 }

这里的最后一个字段是我用来设置输入时间的内容。 我还有一个cshtml页面,其中包含以下与

相关的代码
<div class="form-group">
    @Html.LabelFor(model => model.Serial_No, htmlAttributes: new { @class = "control-label col-md-4" })
    <div class="col-md-8">
        @Html.EditorFor(model => model.Serial_No, new { htmlAttributes = new { @class = "form-control", @placeholder = "Required" } })
        @Html.ValidationMessageFor(model => model.Serial_No, "", new { @class = "text-danger" })
    </div>
</div>

2 个答案:

答案 0 :(得分:4)

您正在寻找名为Regular Expressions或Regex的系统。

在您的情况下,解决方案将是

if(Regex.IsMatch(myText, @"^SWG\d{7}$|^MH\d{5}$"))
{
    //myText is valid
}

在MVC中,该字段看起来像

[Required]
[RegularExpression(@"^SWG\d{7}$|^MH\d{5}$", ErrorMessage="Serial number must be SWG####### or MH#####")]
[Display(Name = "Serial No:")] 
public string Serial_No { get; set; }

您可以看到正则表达式如何运作的细分here

答案 1 :(得分:1)

您可以在MVC中添加正则表达式验证,如下所示:

[RegularExpression("SWG\d{7}|MH\d{5}", ErrorMessage = "Invalid input")]
[Required] //This is the section where input should only begin with MH or SWG
[Display(Name = "Serial No:")] 
public string Serial_No { get; set; }

但是,如果您需要更复杂的验证逻辑,请尝试详细了解远程验证here