Моделирование и проверка формы с многократной отправкой - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь найти правильный способ моделирования и проверки формы с несколькими тегами формы и несколькими кнопками отправки с использованием ASP.Net Core 2. У меня есть форма, в которой пользователь может либо ввести свое имя пользователя и пароль, либовойдите в систему ИЛИ введите свое имя, фамилию и номер мобильного телефона и зарегистрируйтесь.Вот моя модель:

public class Landing
{
    [Required]
    public string Username { get; set; }
    [Required]
    public string Password { get; set; }
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    [Required]
    public string CellNumber { get; set; }
}

Вот мой соответствующий код вида бритвы:

@model MyApp.ViewModels.Landing

<form method="post">
    <div>
        <input asp-for="Username" type="text" />
    </div>
    <div>
        <input asp-for="Password" type="password" />
    </div>
    <div>
        <input type="submit" value="Sign In" />
    </div>
</form>

<form method="post">
    <div>
        <input asp-for="FirstName" type="text" />
    </div>
    <div>
        <input asp-for="LastName" type="text" />
    </div>
    <div>
        <input asp-for="CellNumber" type="text" />
    </div>
    <div>
        <input type="submit" value="Sign Up" />
    </div>
</form>

Теперь проблема, с которой я сталкиваюсь, связана с моей проверкой.Поскольку все мои поля помечены атрибутом [Required], когда я отправляю форму, используя любую кнопку отправки, она проверяет все 5 полей.Я хочу проверить только UserName и Password, ЕСЛИ нажата первая кнопка отправки ИЛИ проверить только FirstName, LastName и CellNumber, ЕСЛИ нажата вторая кнопка отправки.Как мне этого добиться?

1 Ответ

0 голосов
/ 24 мая 2018

Я бы разбил свои модели на два класса и затем использовал бы ViewModel вместо:

public class SignIn
{
    [Required]
    public string Username { get; set; }
    [Required]
    public string Password { get; set; }
}

public class SignUp
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    [Required]
    public string CellNumber { get; set; }
}

public class LandingViewModel
{
    public SignIn SignIn { get; set; }
    public SignUp SignUp { get; set; }
}

Тогда:

@model MyApp.ViewModels.LandingViewModel
SignIn.Username, SignIn.Password, SignUp.FirstName,...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...