У меня есть один вид, и этот вид содержит создание пользовательских и входных форм. Для обоих у меня разные модели. Когда пользователь нажимает кнопку «Регистр», я передам значения модели регистров и для входа в систему клика я передаю логические значения модели. Я также добавил некоторую валидацию в модели (вы можете увидеть ее в моем коде ниже). Поскольку у меня есть две модели, я добавил еще одну модель (Учетная запись), которая содержит обе модели. Передача этой модели (Учетная запись) из представления в контроллер при щелчке регистра или входа в систему. Причина, по которой модель недействительна все время когда пользователь нажимает на кнопку входа в систему am, пропуская модель учетной записи, которая имеет как регистрационную, так и лог-модель, но с данными только в журнале. Все значения для модели регистров будут пустыми, поскольку пользователь нажал на вход в систему (только данные для входа будут там). Таким образом, в контроллере Model.Is valid всегда false, так как для модели регистров не существует значений.Ошибка Model.Isvalid в моем приложении MVC 4. Как это исправить?
Так есть ли другой способ проверки конкретной модели? Каково решение в этом случае?
@model Selfie.Models.Account
@using (Html.BeginForm())
{
@Html.TextBoxFor(model => model.RegisterModel.FirstName,null, new {@class="form-control",id="fn", placeholder=" First Name",required="true",maxlength="20"})
@Html.ValidationMessageFor(model => model.RegisterModel.FirstName)
@Html.TextBoxFor(model => model.RegisterModel.LastName,null, new { @class = "form-control",id="ln", placeholder=" Last Name",required="true",maxlength="20"})
@Html.ValidationMessageFor(model => model.RegisterModel.LastName)
<button type="submit" class="btn btn-success" id="btnsub">Create Account</button>
}
//Login
@using (Html.BeginForm("Login", "Selfie", FormMethod.Post, new { }))
{
@Html.TextBoxFor(model => model.LoginModel.UserName,null, new { @class = "form-control",id="lem"})
@Html.ValidationMessageFor(model => model.LoginModel.UserName)
@Html.TextBoxFor(model => model.LoginModel.Pwd,null, new { @class = "form-control"})
@Html.ValidationMessageFor(model => model.LoginModel.Pwd)
<button type="submit" class="btn btn-success" id="btnlogin">Log In</button>
}
// Контроллер
[HttpPost]
public ActionResult Register(Account registration)
{
if(Model.Isvalid)
{
string a= Account.fname;
}
}
[HttpPost]
public ActionResult Login(Accountlogin)
{
if(Model.Isvalid)
{
string a= Account.username;
}
}
Модель
[Required(ErrorMessage="Last name is required")]
public string LastName {get; set;}
[Required(ErrorMessage="First name is required")]
public string FirstName { get; set; }
}
public class LoginModel
{
[Required(ErrorMessage = "User name is required")]
[Display(Name = "User name")]
[RegularExpression("^([\\w\\.\\-]+)@([\\w\\-]+)((\\.(\\w){2,3})+)$", ErrorMessage = "Invalid email")]
public string UserName { get; set; }
[Required(ErrorMessage = "Password is required")]
public string Pwd { get; set; }
}
public class Account
{
public LoginModel LoginModel{get; set;}
public RegistrationModel RegisterModel {get; set;}
}
'Register()' и 'Login()' - 2 разных метода (и 'Register()' является отключенным никогда не повторяющимся действием). Почему они в одной форме? –
Группы проверки? https://msdn.microsoft.com/en-us/library/ms227424%28v=vs.140%29.aspx –
@SamiKuhmonen Это только веб-формы, я боюсь. – mattytommo