asp.net mvc - Model is Not Valid -



asp.net mvc - Model is Not Valid -

i creating registration form. had property national identity number. want user fill after confirm registration. dont write in registration form.

commented

@* national identity number <div class="editor-field"> @html.editorfor(model => model.identitynumber) @html.validationmessagefor(model => model.identitynumber) </div>*@

and property

[identitynumber("it not valid identity number")] [required(errormessage = "you have come in national number")] [displayname("national identity number:")] public string identitynumber { get; set; }

but doesnt work. found out reasons attribute [identitynumber] , [required] attribute. if comment them,

public actionresult register(member model) { if (modelstate.isvalid) { .....

modelstate.isvalid false. if uncomment it, returns true. must alter allow it? mean, want user write his/her identity number, after registration. in db, idenetiy national number field allows null also.

edit. attribute code here

[attributeusage(attributetargets.field | attributetargets.property, allowmultiple = false, inherited = true)] public class identitynumberattribute : validationattribute, iclientvalidatable { private string wrongidentitynumber; public identitynumberattribute(string message) :base("invalid identity number") { wrongidentitynumber = message; } private string identitynumber; protected override validationresult isvalid(object value, validationcontext validationcontext) { if (value ==null) homecoming new validationresult(wrongidentitynumber); identitynumber = value.tostring(); if (identitynumber.length != 11) homecoming new validationresult(wrongidentitynumber); int sum = 0; (int = 0; < identitynumber.length - 1; i++) { sum += convert.toint32(identitynumber[i].tostring()); } homecoming 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", ""); homecoming 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 homecoming rule; } }

you could add together line

modelstate.remove("errorkey");//you can find error key stepping though code if (modelstate.isvalid) { .....

the "errorkey" "yourmodelname.yourpropertyname". set breakpoint , hover on modelstate , can see keys.

but should create view model has properties need, set info annotations on there, , leave domain models out of it.

asp.net-mvc model-view-controller model-validation

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -