C# MVC-如何检查文本框中的空白 我有一个“邮政编码”文本框,为了让它正确插入到我的数据库中,中间需要一个空白,即“N18 2JY”。

C# MVC-如何检查文本框中的空白 我有一个“邮政编码”文本框,为了让它正确插入到我的数据库中,中间需要一个空白,即“N18 2JY”。,c#,asp.net-mvc,C#,Asp.net Mvc,是否有一种方法可以验证/检查用户是否正确输入了邮政编码,并在邮政编码缺失时给出错误消息 提前感谢:)尝试使用正则表达式验证程序控件生成正则表达式go。尝试使用正则表达式验证程序控件,要生成regex go.您可以使用它来执行验证,如果可能的话,它将允许在客户端执行验证,如果绕过了客户端验证,还可以在服务器端执行验证。简单地说,您需要向视图模型添加一个或多个验证属性: class MyViewModel { [RegularExpression("[^ ]+ [^ ]+")] publi

是否有一种方法可以验证/检查用户是否正确输入了邮政编码,并在邮政编码缺失时给出错误消息


提前感谢:)

尝试使用正则表达式验证程序控件生成正则表达式go。

尝试使用正则表达式验证程序控件,要生成regex go.

您可以使用它来执行验证,如果可能的话,它将允许在客户端执行验证,如果绕过了客户端验证,还可以在服务器端执行验证。简单地说,您需要向视图模型添加一个或多个验证属性:

class MyViewModel {

  [RegularExpression("[^ ]+ [^ ]+")]
  public String PostCode { get; set; }

}
然后在视图模型的视图中渲染post code字段:

Html.EditorFor(model => model.PostCode)
在提交表单时发布到的操作中,您需要验证模型是否有效:

public ActionResult Save(MyViewModel viewModel) {
  if (!ModelState.IsValid)
    return View(viewModel);

  ... process a valid submission
}
您还需要在
Web.config
中启用不引人注目的验证:

 <appSettings>
   <add key="ClientValidationEnabled" value="true"/> 
   <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
 </appSettings>

您可以使用它来执行验证,如果可能的话,它将允许在客户端执行验证,如果绕过客户端验证,它还允许在服务器端执行验证。简单地说,您需要向视图模型添加一个或多个验证属性:

class MyViewModel {

  [RegularExpression("[^ ]+ [^ ]+")]
  public String PostCode { get; set; }

}
然后在视图模型的视图中渲染post code字段:

Html.EditorFor(model => model.PostCode)
在提交表单时发布到的操作中,您需要验证模型是否有效:

public ActionResult Save(MyViewModel viewModel) {
  if (!ModelState.IsValid)
    return View(viewModel);

  ... process a valid submission
}
您还需要在
Web.config
中启用不引人注目的验证:

 <appSettings>
   <add key="ClientValidationEnabled" value="true"/> 
   <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
 </appSettings>

@Martin Liversage是控制验证的MVC模式的更好答案

如果您认为正则表达式非常常见,那么您可以覆盖RegularExpressionAttribute,如下面的示例所示:-

 public class AlphaSpaceAttribute : RegularExpressionAttribute, IClientValidatable
{
    public AlphaSpaceAttribute()
        : base(@"^([a-zA-Z ]*)\s*")
    {
    }
    public override string FormatErrorMessage(string name)
    {
        return Resources.UDynamics.EM_10003;
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule
        {
            ErrorMessage = FormatErrorMessage(this.ErrorMessage),
            ValidationType = "regex",
        };
        rule.ValidationParameters.Add("pattern", @"^([a-zA-Z ]*)\s*");
        yield return rule;
    }


}
公共类AlphaSpaceAttribute:RegularExpressionAttribute,IClientValidable
{
公共AlphaSpaceAttribute()
:base(@“^([a-zA-Z]*)\s*))
{
}
公共重写字符串FormatErrorMessage(字符串名称)
{
return Resources.UDynamics.EM_10003;
}
公共IEnumerable GetClientValidationRules(ModelMetadata元数据、ControllerContext上下文)
{
var规则=新ModelClientValidationRule
{
ErrorMessage=FormatErrorMessage(this.ErrorMessage),
ValidationType=“regex”,
};
rule.ValidationParameters.Add(“模式”、@“^([a-zA-Z]*)\s*”;
收益率-收益率规则;
}
}

上面的代码I覆盖RegularExpressionAttribute,只允许A-Z和间距。请记住,一个属性只允许一个RegularExpressionAttribute

@Martin Liversage是MVC模式控制验证的更好答案

如果您认为正则表达式非常常见,那么您可以覆盖RegularExpressionAttribute,如下面的示例所示:-

 public class AlphaSpaceAttribute : RegularExpressionAttribute, IClientValidatable
{
    public AlphaSpaceAttribute()
        : base(@"^([a-zA-Z ]*)\s*")
    {
    }
    public override string FormatErrorMessage(string name)
    {
        return Resources.UDynamics.EM_10003;
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule
        {
            ErrorMessage = FormatErrorMessage(this.ErrorMessage),
            ValidationType = "regex",
        };
        rule.ValidationParameters.Add("pattern", @"^([a-zA-Z ]*)\s*");
        yield return rule;
    }


}
公共类AlphaSpaceAttribute:RegularExpressionAttribute,IClientValidable
{
公共AlphaSpaceAttribute()
:base(@“^([a-zA-Z]*)\s*))
{
}
公共重写字符串FormatErrorMessage(字符串名称)
{
return Resources.UDynamics.EM_10003;
}
公共IEnumerable GetClientValidationRules(ModelMetadata元数据、ControllerContext上下文)
{
var规则=新ModelClientValidationRule
{
ErrorMessage=FormatErrorMessage(this.ErrorMessage),
ValidationType=“regex”,
};
rule.ValidationParameters.Add(“模式”、@“^([a-zA-Z]*)\s*”;
收益率-收益率规则;
}
}

上面的代码I覆盖RegularExpressionAttribute,只允许A-Z和间距。请记住,一个属性只允许一个RegularExpressionAttribute

你试过搜索正则表达式吗?你试过搜索正则表达式吗?谢谢,这很有效。但是,当我在没有空格的情况下输入邮政编码并关闭然后重新打开浏览器时,它已将两个不相关的下拉列表保存到我之前选择的列表中……对不起,我不明白为什么它会保存两个不相关的下拉列表,因为不引人注目的验证与此问题无关。不,这很好,这是一个单独的验证问题,我以前没有发现过。谢谢你的帮助。它起作用了,我学到了一些新东西!不客气,但是@Martin是第一个回答^^的人。谢谢。不过,当我在没有空格的情况下输入邮政编码并关闭然后重新打开浏览器时,它已将两个不相关的下拉列表保存到我之前选择的列表中……对不起,我不明白为什么它会保存两个不相关的下拉列表,因为不引人注目的验证与此问题无关。不,这很好,这是一个单独的验证问题,我以前没有发现过。谢谢你的帮助。它起作用了,我学到了一些新东西!不客气,但是@Martin是第一个回答^^的人。向正则表达式检查添加澄清验证消息对最终用户有很大帮助。[RegularExpression(“[^]+[^]+”,ErrorMessage=“在此处添加自定义验证错误消息”]向正则表达式检查添加澄清验证消息对最终用户有很大帮助。[RegularExpression(“[^]+[^]+”),ErrorMessage=“在此处添加自定义验证错误消息”]