Сохранение входных данных в базу данных из веб-приложения - PullRequest
0 голосов
/ 18 июня 2020

Hy, Моя страница регистрации не сохраняет входные данные в базу. Вот мой html код

@page
@model PWAPI.Model.RegistrationModel.Registration
@{
ViewData["Title"] = "User Registration";
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Registration</title>
</head>
<body>
    <h3>Registration</h3>
    <form method="post" asp-page="RegistrationPage/Registration"></form>
    <div asp-validation-summary="All" class="text-danger"></div>
    <table>
        <tr>
            <td>Username</td>
            <td>
                <input asp-for="@Model.Username" />
                <span asp-validation-for="Username" class="text-danger"></span>
            </td>
        </tr>
        <tr>
            <td>Email</td>
            <td>
                <input asp-for="@Model.Email" />
                <span asp-validation-for="Email" class="text-danger"></span>
            </td>
        </tr>
        <tr>
            <td>Password</td>
            <td>
                <input asp-for="@Model.Password" />
                <span asp-validation-for="Password" class="text-danger"></span>
            </td>
        </tr>
        <tr>
            <td>Confrim Password</td>
            <td>
                <input asp-for="@Model.ConfirmPassword" />
                <span asp-validation-for="ConfirmPassword" class="text-danger"></span>
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <input type="submit" value="Save"/>
                <br />
                <a href="/LoginPage/Login">Login</a>
            </td>
        </tr>
    </table>
</body>

Он выглядит так Моя страница регистрации

Моя модель регистрации

[Table("Registration")]
public class Registration
{
    [Required]
    public string Username { get; set; }
    [Required]
    [EmailAddress]
    public string Email { get; set; }
    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }
    [DataType(DataType.Password)]
    [Display(Name ="Confirm Password")]
    [Compare("Password", ErrorMessage = "Password and Confrim Password do not match.")]
    public string ConfirmPassword { get; set; }
}

То, что я пытаюсь сделать после, и я думаю, что здесь я делаю что-то не так.

public class RegistrationModel : PageModel
{
    private Registration registration { get; set; }
    public IActionResult OnPost()
    {
        if(ModelState.IsValid)
        {
            registration = new Registration();
            string connection = ConfigurationManager.ConnectionStrings["PWAPI"].ConnectionString;
            SqlConnection con = new SqlConnection(connection);
            con.Open();
            SqlCommand com = new SqlCommand("sp_get_registration", con)
            {
                CommandType = CommandType.StoredProcedure
            };
            com.Parameters.AddWithValue("@Email", registration.Email);
            com.Parameters.AddWithValue("@Password", registration.Password);
            com.Parameters.AddWithValue("@ConfirmPassword", registration.ConfirmPassword);
            com.ExecuteNonQuery();
            con.Close();
            return RedirectToPage("/LoginPage/Login");
        }
        else
        {
            return new RedirectToPageResult("/RegistrationPage/Registration");
        }
    }
}

Когда я нажимаю «сохранить», ничего не происходит. Страница даже не обновляется sh, и никакие входные данные не сохраняются в моей базе данных. кроме того, когда я нажимаю кнопку «Сохранить», ничего не написав, ошибки исключения не возникает. РЕДАКТИРОВАТЬ: моя хранимая процедура РЕДАКТИРОВАТЬ 2: Моя база данных также имеет идентификатор пользователя, но он автоматически увеличивается.

CREATE Procedure sp_get_registration
@Email varchar(50),
@Password nvarchar(50),
@ConfirmPassword nvarchar(50)
as
Insert into Registration(Email, Password, ConfirmPassword)
Values (@Email, @Password, @ConfirmPassword)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...