我有一個「郵政編碼」文本框,爲了正確插入我的數據庫,它需要在中間有一個空白區域,即「N18 2JY」。MVC - 如何檢查文本框中的空格
有沒有一種方法,我可以驗證/檢查,看看用戶是否已經正確輸入郵政編碼,如果它的缺失給出錯誤信息?
感謝提前:)
我有一個「郵政編碼」文本框,爲了正確插入我的數據庫,它需要在中間有一個空白區域,即「N18 2JY」。MVC - 如何檢查文本框中的空格
有沒有一種方法,我可以驗證/檢查,看看用戶是否已經正確輸入郵政編碼,如果它的缺失給出錯誤信息?
感謝提前:)
@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;
}
}
上面的代碼我重寫RegularExpressionAttribute只允許A-Z和間距。請記住一個屬性只允許一個RegularExpressionAttribute。
嘗試使用正則表達式驗證控制,生成正則表達式去here。
你可以做,使用unobtrusive validation這將使如果客戶端驗證繞過來進行驗證客戶端,如果可能的,而且服務器端。簡單地說,你需要添加一個或多個屬性驗證您的視圖模型:
class MyViewModel {
[RegularExpression("[^ ]+ [^ ]+")]
public String PostCode { get; set; }
}
,然後在視圖模型視圖渲染後的代碼字段:
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>
你試過搜索正則表達式嗎? – Abhitalks