c# - List of Type Class Posting null in the Action -
i have data coming in model , want data on form post model posted fine except list of class type in model posted null.
i know doing wrong in view @ rendering unable resolve it.
here chunk view rendering:
@model inovaclassic.models.registermodel <table> @if (model.postreq != null && model.postreq._questions != null && model.postreq._questions.count > 0) { (int = 0; < model.postreq._questions.count; i++) { if (i == 0) { <legend style="border-bottom: 1px solid gray; font-size: 16px;">questions</legend> } <tr> <td> @html.label(model.postreq._questions[i].title) @html.hiddenfor(c => c.postreq._questions[i].id) @html.hiddenfor(c => c.postreq._questions[i].questionnaireid) </td> <td> <textarea name="answer[@i]" class="required" style="width:520px;height:20px;"></textarea> </td> </tr> } } </table>
here register action:
[allowanonymous] [validateantiforgerytoken] [httppost] public actionresult register(registermodel model, formcollection form) { model.postreq = new postrequirements(); viewbag.token = ""; if (!model.availability.endsafter) model.availability.endsaftervalue = 1; //model.resume.uploadedat = datetime.now; //model.resume.applicationid = 0; //model.resume.isdefault = true; foreach (modelstate modelstate in viewdata.modelstate.values) { foreach (modelerror error in modelstate.errors) { //dosomethingwith(error); } } if (modelstate.isvalid) { // attempt register user try { int postid; int? applicationid = null; string confirmationtoken = websecurity.createuserandaccount(model.username.trim(), model.password, new { email = model.email }, true); var roles = (simpleroleprovider)roles.provider; roles.adduserstoroles(new string[] { model.username.trim() }, new string[] { "applicant" }); applicant app = new applicant(); app = applicant.mapapplicant(model.registervm); app.userid = db.users.firstordefault(c => c.username == model.username.trim()).userid; db.applicant.add(app); db.savechanges(); bool isnumber = int.tryparse(form["postid"],out postid); if (isnumber) { applicationid = applyjob(app.userid, postid); /*if (model.postreq != null && model.postreq._questions != null) { (int = 0; < model.postreq._questions.count; i++) { questionnaireanswers answer = new questionnaireanswers(); answer.applicationid = applicationid; answer.questionid = model.postreq._questions[i].questionnaireid; answer.answer = form["answer[" + + "]"].tostring(); db.questionnaireanswers.add(answer); } }*/ if (form["questionscount"] != null) { int count = convert.toint32(form["questionscount"]); (int = 0; < count; i++) { questionnaireanswers answer = new questionnaireanswers(); answer.applicationid = applicationid; answer.questionid = convert.toint32(form["questionseqid[" + + "]"]); answer.answer = form["answer[" + + "]"].tostring(); db.questionnaireanswers.add(answer); } } (int = 1; < request.files.count; i++) { string file = savedocument(applicationid, i); int titleindex = - 1; applicationdocument applicationdocument = new applicationdocument(); applicationdocument.applicationid = convert.toint32(applicationid); applicationdocument.documenttitle = form["postreq._documents[" + titleindex + "]"]; applicationdocument.path = file; db.applicationdocuments.add(applicationdocument); } } //if (string.isnullorwhitespace(form["postid"].tostring())) //{ string filename = saveresume(app.userid, request.files[0] httppostedfilebase); if (filename != "") { model.resume.path = filename; model.resume.userid = app.userid; model.resume.uploadedat = datetime.now; model.resume.applicationid = applicationid; db.resumes.add(model.resume); } if (form["ends"] == "1") { model.availability.doesnotend = true; model.availability.endsby = false; model.availability.endsafter = false; } if (form["ends"] == "2") { model.availability.endsafter = true; model.availability.doesnotend = false; model.availability.endsby = false; } if (form["ends"] == "3") { model.availability.endsby = true; model.availability.endsafter = false; model.availability.doesnotend = false; } model.availability.applicationid = applicationid; model.availability.userid = app.userid; db.availabilities.add(model.availability); // } //if (!string.isnullorwhitespace(form["postid"].tostring())) //{ // string filename = saveresume(app.userid, request.files[0] httppostedfilebase); // if (filename != "") // { // model.resume.path = filename; // model.resume.userid = app.userid; // model.resume.uploadedat = datetime.now; // model.resume.applicationid = applicationid; // db.resumes.add(model.resume); // } // if (form["ends"] == "1") // { // model.availability.doesnotend = true; // model.availability.endsby = false; // model.availability.endsafter = false; // } // if (form["ends"] == "2") // { // model.availability.endsafter = true; // model.availability.doesnotend = false; // model.availability.endsby = false; // } // if (form["ends"] == "3") // { // model.availability.endsby = true; // model.availability.endsafter = false; // model.availability.doesnotend = false; // } // model.availability.applicationid = applicationid; // model.availability.userid = app.userid; // db.availabilities.add(model.availability); // (int = 0; < model.postreq._questions.count; i++) // { // questionnaireanswers answer = new questionnaireanswers(); // answer.applicationid = applicationid; // answer.questionid = model.postreq._questions[i].questionnaireid; // answer.answer = form["answer[" + + "]"].tostring(); // db.questionnaireanswers.add(answer); // } // (int = 1; < request.files.count; i++) // { // string file = savedocument(applicationid, i); // applicationdocument applicationdocument = new applicationdocument(); // applicationdocument.applicationid = applicationid; // applicationdocument.documenttitle = form["postreq._documents[" + + "]"]; // applicationdocument.path = file; // db.applicationdocuments.add(applicationdocument); // } // //db.savechanges(); //} //applicant myapplicant = applicant.mapapplicant(model.registervm); //test code //resume resume = new resume(); //resume.title = "cv97"; //resume.isdefault = true; //resume.path = "37_adloader[1].htm"; //resume.userid = app.userid; //resume.applicationid = null; //db.resumes.add(resume); db.savechanges(); //websecurity.login(model.username, model.password); string returnurl = tempdata["returnurl"] == null ? "" : tempdata["returnurl"].tostring(); string str_rev = returnurl.reverse().takewhile(c => char.isdigit(c)).tostring(); coverletter letter = myhelpers.registerletter(); urlhelper u = new urlhelper(this.controllercontext.requestcontext); //string url = myhelpers.getbaseurl() + u.action("confirmaccount", "account", new { id = confirmationtoken, user = model.username.trim(), returnurl = returnurl }); string url = myhelpers.getbaseurl() + u.action("confirmaccount", "account", new { id = confirmationtoken, user = model.username.trim() }); string link = "<a href=\"" + url + "\" target=\"_blank\">confirmation link</a>"; string body = letter.body.replace("%link%", link); myhelpers.sendmail(model.email, letter.subject, body); viewbag.token = "1"; return redirecttoaction("result", "post", new { id = 3 }); //return view(); // return redirecttoaction("index", "home"); } catch (membershipcreateuserexception e) { modelstate.addmodelerror("", errorcodetostring(e.statuscode)); } } list<country> countries = db.country.tolist(); selectlist countrylist = new selectlist(countries, "id", "name", model.registervm.country); list<country> visacountries = db.country.tolist(); selectlist visacountrylist = new selectlist(visacountries, "id", "name", model.registervm.visacountry); list<maritalstatus> maritalstatuses = db.maritalstatus.tolist(); selectlist maritalstatuslist = new selectlist(maritalstatuses, "id", "name", model.registervm.maritalstatus); list<title> titles = db.title.tolist(); selectlist titlelist = new selectlist(titles, "id", "name", model.registervm.title); list<visatype> visatypes = db.visatype.tolist(); selectlist visatypelist = new selectlist(visatypes, "id", "name", model.registervm.visatype); viewbag.countrylist = countrylist; viewbag.visacountrylist = visacountrylist; viewbag.maritalstatuslist = maritalstatuslist; viewbag.titlelist = titlelist; viewbag.visatypelist = visatypelist; // if got far, failed, redisplay form //return view(model); return partialview("~/views/account/registeruser.cshtml", model); }
here model:
public class registermodel { [required(errormessage="username required")] [stringlength(50)] [display(name = "user name")] public string username { get; set; } [required(errormessage = "password required")] [stringlength(15, minimumlength = 6)] [datatype(datatype.password)] [display(name = "password")] public string password { get; set; } [datatype(datatype.password)] [display(name = "confirm password")] [compare("password", errormessage = "the password , confirmation password not match.")] public string confirmpassword { get; set; } [required(errormessage = "email address required")] [datatype(datatype.emailaddress), regularexpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", errormessage = "please enter valid email address.")] [stringlength(100)] public string email { get; set; } public registerviewmodel registervm { get; set; } public resume resume { get; set; } public availability availability { get; set; } public postrequirements postreq { get; set; } }
see postrequirements:
public class postrequirements { public list<question> _questions { get; set; } public list<string> _documents { get; set; } } }
you missing form
tags.
@using (html.beginform()) { }
this should wrapped around form elements.
Comments
Post a Comment