Как передать данные из представления в контроллер с помощью зависимости WebMatrix.WebSecurity - PullRequest
0 голосов
/ 18 июня 2019

Я получаю нулевые значения, когда пытаюсь создать нового пользователя в этой форме регистрации. Я использую зависимости WebMatrix.WebData. Что я хочу сделать, это просто передать значения, которые я ввожу в форму, и значения, которые я ввожу в раскрывающихся списках, в контроллер. Кажется, я не могу этого сделать, потому что все возвращается в ноль:

Сначала в моем Razor View, где я ввожу данные, которые у меня есть:

   {
       @Html.AntiForgeryToken()
       @Html.ValidationSummary(true)


       <fieldset>
           <legend>Registration Form</legend>
           <ol class="comtrexBlue-text">
               <li>
                   @Html.LabelFor(m => m.UserName)
                   @Html.TextBoxFor(m => m.UserName)
               </li>
               <li>
                   @Html.LabelFor(m => m.Password)
                   @Html.PasswordFor(m => m.Password)
               </li>
               <li>
                   @Html.LabelFor(m => m.ConfirmPassword)
                   @Html.PasswordFor(m => m.ConfirmPassword)
               </li>

               <li>
                   @Html.LabelFor(m => m.Email)
                   @Html.TextBoxFor(m => m.Email)
               </li>
           </ol>
           <button class="btn larger" type="submit">Create</button>
       </fieldset>

   } 

Вот что у меня в контроллере:

````[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult UserCreateNew(string dummy)
        {

          var m = new UserCreateNewViewModel();
          m.UserNumber = Convert.ToInt32(Session["UserNumber"]);
          DataTable dt = new DataTable();

          dt = new DataTable();
          string constr = ConfigurationManager.ConnectionStrings["strCnnStore_Data"].ConnectionString;



          dt = new DataTable();

          string strSQL = "SELECT * FROM UserStoreDefinition"
                + " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")";

          using (DataAccess da = new DataAccess(constr))
          {
            dt = da.GetDataTable(strSQL, CommandType.Text);
          }

          // Convert a DataTable to a list. 
          m.lstStoreDefinition = LinqExtensions.ToListof<UserStoreDefinition>(dt);

          dt = new DataTable();

          strSQL = "SELECT distinct StoreOwnerName, StoreOwnerNumber FROM UserStoreDefinition"
            + " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")"
            + " AND (UserStoreDefinition.StoreOwnerNumber <> -1)";

          using (DataAccess da = new DataAccess(constr))
          {
            dt = da.GetDataTable(strSQL, CommandType.Text);
          }
          m.lstStoreOwnerDefinitions = LinqExtensions.ToListof<UserStoreDefinition>(dt);

          dt = new DataTable();

          strSQL = "SELECT distinct StoreRegionName, StoreRegionNumber FROM UserStoreDefinition"
          + " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")"
          + " AND (UserStoreDefinition.StoreRegionNumber <> -1)";

          using (DataAccess da = new DataAccess(constr))
          {
            dt = da.GetDataTable(strSQL, CommandType.Text);
          }
          m.lstStoreRegionDefinitions = LinqExtensions.ToListof<UserStoreDefinition>(dt);

          dt = new DataTable();
          //strSQL = "StoreTypeDefinitions";
          strSQL = "SELECT distinct StoreTypeName, StoreTypeNumber FROM UserStoreDefinition"
          + " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")"
          + " AND (UserStoreDefinition.StoreTypeNumber <> -1)";

          using (DataAccess da = new DataAccess(constr))
          {
            dt = da.GetDataTable(strSQL, CommandType.Text);
          }
          m.lstStoreTypeDefinitions = LinqExtensions.ToListof<UserStoreDefinition>(dt);

          # endregion

          if (ModelState.IsValid)
          {
            string registerToken =
                WebMatrix.WebData.WebSecurity.CreateUserAndAccount(m.UserName, m.Password, new { Email = m.Email }, true);
            SimpleSecurity.WebSecurity.ConfirmAccount(registerToken);

            string confirmationToken =
            WebMatrix.WebData.WebSecurity.GeneratePasswordResetToken(m.UserName);

            dynamic email = new Email("ChngPasswordEmail");
            email.To = m.Email;
            email.UserName = m.UserName;
            email.baseUrl = GetBaseUrl();
            email.ConfirmationToken = confirmationToken;
            email.Send();


          }
          return RedirectToAction("UserList");
        } ````

и это модель представления регистрации, которая наследуется моим пользователем. Создайте новую модель представления:

    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", 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 and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }

        [Required]
        [Display(Name = "Email")]
        public string Email { get; set; }

    } ````





I am getting an error when I click the create button on this line: ```` string registerToken =



All of the values(m.UserName, m.Password and m.Email) are NULL.

...