c# - ASP.net: How to handle non-valid model with foreign keys -


i have model foreign keys:

public class route : idbentity {     [key]     public int id { get; set; }      [display(name = "flight number")]     [required(errormessage = "flight number required")]     public string flightnumber { get; set; }      [display(name = "aircraft")]     [required(errormessage = "aircraft required")]     public int? aircraftid { get; set; }      [foreignkey("aircraftid")]     public virtual aircraft aircraft { get; set; } } 

on call of show view or edit view use retrieve object:

public new async task<route> get(int id) {     return await context         .set<route>()         .where(e => e.id == id)         .include(e => e.aircraft)         .firstordefaultasync(); } 

and works great.

but if edit method received non-valid model, try return model view:

[httppost] public async task<iactionresult> edit(tentity e) {     if (!modelstate.isvalid) return view(e);      var issuccessfull = await service.update(e);      if (!issuccessfull) return statuscode(500);      return redirecttoaction("index"); } 

edit method receives model null references foreign keys.

and method returns model view, references foreign key object null , view can't render object correct.

so, why edit method receive model null references? , how return non-valid model correct references view?

on postback, viewmodel contain properties did render <input> in html.

there 2 possibilities solve this:

  • post properties needed render view. viewmodel contain these values , available in error case.
  • reload data db , merge posted model in error case.

i prefer first method. lets assume need id , name of aircraft render view, not editable in view. in edit.cshtml, render hidden field roundtrip these properties:

@html.hiddenfor(m => m.aircraft.id) @html.hiddenfor(m => m.aircraft.name) // property of related object 

ps: because use entity model render view, aircraft updated if choose first approach. can prevent using viewmodel render, , map properties can edited entity in post edit action.


Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - IE9 error '$'is not defined -