등록 양식을 만들 예정입니다. 나는 국가 신원 번호 인 재산을 가지고있다. 그러나 사용자가 등록을 확인한 후 채우길 원합니다. 그런 다음 등록 양식에 기재하지 않습니다.모델이 유효하지 않습니다.
댓글 :
National Identity Number
<div class="editor-field">
@Html.EditorFor(model => model.IdentityNumber)
@Html.ValidationMessageFor(model => model.IdentityNumber)
</div>
을 그리고 이것은 내 재산 :
[IdentityNumber("It is not a valid identity number")]
[Required(ErrorMessage = "You have to enter your national number")]
[DisplayName("National Identity Number:")]
public string IdentityNumber { get; set; }
그러나이 작동하지 않습니다. 나는 이유가 [IdentityNumber]
과 [Required]
이라는 속성이라고 생각한다. 내가 그들을 언급하는 경우,
public ActionResult Register(Member model)
{
if (ModelState.IsValid)
{
//.....
ModelState.IsValid
false
입니다. 주석을 제거하면 true를 반환합니다. 그렇다면 어디에서 그것을 허용해야합니까? 내 말은, 사용자가 등록 후 ID 번호를 쓰길 원합니다.
내 데이터베이스에서 신원 국가 번호 필드는 null도 허용합니다.
편집 :
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property,
AllowMultiple = false, Inherited = true)]
public class IdentityNumberAttribute : ValidationAttribute, IClientValidatable
{
private string WrongIdentityNumber;
public IdentityNumberAttribute(string message)
:base("Invalid an identity number")
{
WrongIdentityNumber = message;
}
private string identityNumber;
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value == null)
return new ValidationResult(WrongIdentityNumber);
identityNumber = value.ToString();
if (identityNumber.Length != 11)
return new ValidationResult(WrongIdentityNumber);
int sum = 0;
for (int i = 0; i < identityNumber.Length - 1; i++)
{
sum += Convert.ToInt32(identityNumber[i].ToString());
}
return sum.ToString()[1] == identityNumber[10]
? ValidationResult.Success
: new ValidationResult(WrongIdentityNumber);
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule validationRule = new ModelClientValidationRule();
validationRule.ValidationType = "identitynumber";
validationRule.ErrorMessage = "Invalid identity number";
validationRule.ValidationParameters.Add("param", "");
return new List<ModelClientValidationRule> { validationRule };
//var rule = new ModelClientValidationRule();
//rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
//rule.ValidationParameters.Add("identitynumber", identityNumber); //küçük harfle yaz html kuralı
//rule.ValidationType = "identitynumber";
//yield return rule;
}
}
[필수] 속성을 설정했습니다. 이것을 제거하고 그것을 시도하십시오 –
나는 시도했다. 내가 전에 쓴 것처럼, IdentityNumber 속성도 문제가있다 – ertan2002