Как можно условно отключить проверку некоторых полей на стороне клиента?
Вот пример того, что мне нужно сделать:
- пользователь пишет имя и адрес и отправляет.
- Оба проверяются как на стороне сервера, так и на стороне клиента.Если проверка прошла успешно, электронное письмо отправляется на указанный адрес и сохраняется пара (имя, адрес).
- в качестве ответа отображается та же страница (я не хочу перенаправлять!) На этот раз с подтверждением.Пользователь может повторно ввести свое имя и отправить.В этом случае электронная почта будет пересылаться по адресу, соответствующему данному имени.
Это не работает, потому что: проверка на стороне клиента не пройдет, когда пользователь нажимает кнопку повторной отправки на втором (экран подтверждения)).Было бы сказано, что требуется электронная почта, даже если для нее нет поля.Как отключить проверку почты по электронной почте до того, как страница подтверждения будет отправлена пользователю?
Пример страницы ASP.NET MVC
<%if (Model.Confirm == false){ %>
<% using (Html.BeginForm()) { %>
Your email: <%: Html.EditorFor(m => m.Email) %>
Your name: <%: Html.EditorFor(m => m.Name) %>
<input type="submit" value="Send Email" />
<% } %>
<%} else{ %>
The e-mail was send! You can write your name and click button to resend it.
<% using (Html.BeginForm()) { %>
Your name: <%: Html.EditorFor(m => m.Name) %>
<input type="submit" value="Resend me email again" />
<% } %>
<% } %>
В модели требуются Email
и Name
поле для принудительной проверки на стороне клиента.
Пример действий контроллера
public ActionResult Index(){
return new MyModel {Confirm = false;}
}
[HttpPost]
public ActionResult Index(MyModel model){
if(DataHelper.isKnown(model.Name)){
//send e-mail to the address corresponding to name in database
}
if(!ModelState.IsValid) {
return View(model);
}
//Send e-mail to address in email
//store pair name->email to database
model.Confirm = true;
return View(model);
}