我想使用自定義驗證,但被忽略。我沒有得到任何錯誤或任何東西。它什麼都不做。我究竟做錯了什麼?謝謝你的閱讀。ASP.NET MVC 4自定義驗證不起作用
--- ModelMetadata.cs ----
using System.ComponentModel.DataAnnotations;
using myproject.Common;
namespace myproject.Models
{
[MetadataType(typeof(ModelMetaData))]
public partial class Reference
{
}
public class ModelMetaData {
[Required]
[Display(Name = "Full Name *")]
[ExcludeCharacters("/.,[email protected]#$%")] // <<<====== This is being ignored.
public string Name { get; set; }
}
}
- Create.cshtml ----
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="editor-field">
@Html.EditorFor(model => model.Name) // <<<====== field
@Html.ValidationMessageFor(model => model.Name)
</div>
- ExcludeCharacters.cs - -
namespace myproject.Common
{
public class ExcludeCharacters : ValidationAttribute
{
private readonly string _chars;
public ExcludeCharacters(string chars) : base("{0} contains invalid characters")
{
_chars = chars;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
for (int i = 0; i < _chars.Length; i++)
{
var valueAsString = value.ToString();
if (valueAsString.Contains(_chars[i].ToString()))
{
var errorMessage = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(errorMessage);
}
}
}
return ValidationResult.Success;
}
}
}
你調試了你的驗證屬性嗎?你有沒有考慮使用正則表達式來防止某些字符被輸入? – benjrb 2014-10-30 16:03:02
對不起。當我運行程序時,我得到這個錯誤:「無法獲得屬性值'不顯眼':對象爲空或未定義」。我搜索了一下,並嘗試了一些建議,但沒有運氣。 – ceci 2014-10-30 16:38:27
去哪兒發生這個錯誤? – benjrb 2014-10-30 16:41:47