c# - Using Tuple for passing multiple models -


i have view includes login , registration form.

loginandregister.cshtml file:

    @model tuple<models.loginviewmodel, models.registerviewmodel>      @using (html.beginform("login", "account", formmethod.post))     {          @html.antiforgerytoken()          @html.validationsummary(false)          // form login here      }     @using (html.beginform("register", "account", formmethod.post))     {          @html.antiforgerytoken()          @html.validationsummary(false)          // form register here      } 

accountcontroller file:

    [httppost]     [allowanonymous]     [validateantiforgerytoken]     public async task<actionresult> register([bind(prefix = "item2")] registerviewmodel model)     {          if (modelstate.isvalid)          {             // enter code here               }           // if got far, failed, redisplay form          var tuplemodel = new tuple<loginviewmodel, registerviewmodel>(null, model);          return view("loginandregister", tuplemodel);          }     }      [httppost]     [allowanonymous]     [validateantiforgerytoken]     public async task<actionresult> login([bind(prefix = "item1")] loginviewmodel model, string returnurl)     {          var tuplemodel = new tuple<loginviewmodel, registerviewmodel>(model, null);           if (!modelstate.isvalid)          {                return view("loginandregister", tuplemodel);          }       } 

i have 2 question, if guys don't mind me?

  1. when pass model (just 1 item of tuple) controller view, have change tuple<> type , pass 1 value null. way correct? it's working me afraid way isn't correct.

  2. and then, when model invalid (example: values's input in login form invalid), error messages bind @html.validationsummary(false). it's showed in 2 places (register , login form). how resolve issue? https://gyazo.com/e9146059a6a098ee787565222d8dc744

thanks kind helping

login , register 2 different models. can around using tuples in asp.net html helpers. using tuple makes things messy.

what want this:

register.cshtml file:

@model models.registerviewmodel  @using (html.beginform("register", "account", formmethod.post)) {      @html.antiforgerytoken()      @html.validationsummary(false)      // form register here  } <div>or if have account login:</div> @html.renderaction("login") 

controller:

public actionresult login() {     if (request.isajaxrequest())     {          return partialview();     } } 

this render login view in register view, can other way around. although i'd offer link user redirect them login page rather using renderaction.


Comments