title: MVC 5 with two registration forms
body: <p>Is it possible or even recommended to create 2 registration forms for the same application? I am using ASP.NET Identity 2.0 for this project. Both registration forms have similar field names but have different purpose. One is for Teacher Training and the other is for Donations.  Would it be better to create two separate applications? </p>
  
  <p>Example First Registration Form</p>
  
  <pre><code>[HttpPost]
  [AllowAnonymous]
  [ValidateAntiForgeryToken]
  public async Task&lt;ActionResult&gt; Register1(RegisterViewModel model)
  {
      if (ModelState.IsValid)
      {
            var user = new ApplicationUser 
             { 
              UserName = model.Email, 
              Email = model.Email 
                };
  
          // Add the Address properties:
          user.Address = model.Address;
          user.City = model.City;
          user.State = model.State;
          user.PostalCode = model.PostalCode;
          // Additional fields specific to Registration Form1
          field1
          field2
          .....
  
          var result = await UserManager.CreateAsync(user, model.Password);
          if (result.Succeeded)
          {
              var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
              var callbackUrl = Url.Action("ConfirmEmail", "Account", 
                  new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
              await UserManager.SendEmailAsync(user.Id, 
                  "Confirm your account", 
                  "Please confirm your account by clicking this link: &lt;a href=\"" 
                  + callbackUrl + "\"&gt;link&lt;/a&gt;");
              ViewBag.Link = callbackUrl;
              return View("DisplayEmail");
          }
          AddErrors(result);
      }
  
      // If we got this far, something failed, redisplay form
      return View(model);
  }
  </code></pre>
  
  <p>Second Registration Form</p>
  
  <pre><code>[HttpPost]
  [AllowAnonymous]
  [ValidateAntiForgeryToken]
  public async Task&lt;ActionResult&gt; Register2(RegisterViewModel model)
       {
      if (ModelState.IsValid)
      {
            var user = new ApplicationUser 
             { 
              UserName = model.Email, 
              Email = model.Email 
                };
  
          // Add the Address properties:
          user.Address = model.Address;
          user.City = model.City;
          user.State = model.State;
          user.PostalCode = model.PostalCode;
          // Additional fields specific to Registration Form2
          field1
          field2
          SiteURL
          PaymentType
  
          var result = await UserManager.CreateAsync(user, model.Password);
          if (result.Succeeded)
          {
              var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
              var callbackUrl = Url.Action("ConfirmEmail", "Account", 
                  new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
              await UserManager.SendEmailAsync(user.Id, 
                  "Confirm your account", 
                  "Please confirm your account by clicking this link: &lt;a href=\"" 
                  + callbackUrl + "\"&gt;link&lt;/a&gt;");
              ViewBag.Link = callbackUrl;
              return View("DisplayEmail");
          }
          AddErrors(result);
      }
  
      // If we got this far, something failed, redisplay form
      return View(model);
  }
  </code></pre>