c# - manage serverside validaton when I use jquery post -
from razor view i'm sending js object using jquery mvc controller. reason why using jquery post method , not razors form need manage dynamic input of fields. on view fields (inputtextbox) dynamically added view (from 0 - 10) , manage solution using js on page.
var myjsobj = ... $.ajax({ type: 'post', traditional: true, contenttype: 'application/json', url: '/mycontroller/someaction', data: json.stringify({ model: myjsobj}), success: function () { } }); on server side, mvc receives model , in case of error want return object view.
[httppost] public actionresult someaction(mymodel model) { if(!modelstate.isvalid) { modelstate.addmodelerror("", "error occured!"); return view(model); } return redirecttoaction("index"); } i have inside razor view
html.validationsummary but since i'm using jquery post dont know how receive view , display error use regular razor form. or if know better approach manage dynamically added input boxes on razor view please post. please.
i think you've got couple of options here:
- if prefer continue use ajax post you've shown above, need take response post , inject current html document. example,
$.ajax({ type: 'post', traditional: true, contenttype: 'application/json', url: '/mycontroller/someaction', data: json.stringify({ model: myjsobj}), success: function (data) { // case mvc action found model validation // errors, , responding html document // shows errors. var returnedbodyhtml = $(data).find('body').html(); $('body').html(returnedbodyhtml); } }); (that's untested code there, may have debug little bit.) code doesn't handle case server responded redirect (in case of successful validation). so, check out this post options there.
- your other option use standard form submit. know said had dynamically generated input controls on page, doesn't mean can't form submit. need make sure these dynamically generated elements have correct "name" attribute on them, values mapped appropriately model on server side action accepting post. example, if javascript dynamically generating html element this, , inserting form:
<input type="text" name="mydynamicallygeneratedinput[0]" /> <input type="text" name="mydynamicallygeneratedinput[1]" /> <input type="text" name="mydynamicallygeneratedinput[2]" /> <input type="text" name="mydynamicallygeneratedinput[3]" /> then form submit still work, long on server side, mymodel class has corresponding property:
class mymodel { public list<string> mydynamicallygeneratedinput {get; set;} }
Comments
Post a Comment