У меня сейчас есть пара вещей. У меня есть форма, на которой я пытаюсь выполнить проверку на стороне клиента, и она работает, однако, если я нажму кнопку отправить с одним из полей, которые не являются действительными, он все равно отправит информацию клиенту, который я не хочу делать, пока вся информация не будет правильной.
Другая проблема, с которой я сталкиваюсь, заключается в том, что я продолжаю получать «код http-статуса 500», когда нажимаю кнопку «Отправить», и форма все равно будет работать и отправлять электронную почту, даже если я получаю эту ошибку 500 (с помощью fiddler2 показывает это, иначе я бы не узнал). Может кто-нибудь, пожалуйста, скажите мне, почему это так, и как я могу это исправить, пожалуйста. Спасибо, ребята.
Вот моя форма:
<div id="Contact">
<% Html.EnableClientValidation(); %>
<%using (Html.BeginForm("SendContactMessage", "ContactUs", FormMethod.Post))
{%>
<table cellpadding="0" cellspacing="0" border="0" width="900" height="100%">
<tr>
<td id="body" class="Content">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="right" valign="middle">
<label for="name" id="name">First & Last Name</label><br>
<label class="req">
<%=Html.ValidationMessageFor(a => a.ContactName)%>
Required</label>
</td>
<td class="fieldareacontact">
<%= Html.TextBox("ContactName", Model.ContactName, new { id = "Name", title = "name", @class = "fieldscontact" })%>
</td>
</tr>
<tr>
<td align="right" valign="middle">
<label>Email Address</label><br>
<label class="req">
<%=Html.ValidationMessageFor(a => a.ContactEmail)%>
Required
</label>
</td>
<td class="fieldareacontact">
<%= Html.TextBox("ContactEmail", Model.ContactEmail, new { id = "Email", title = "email", @class = "fieldscontact" })%>
</td>
</tr>
<tr>
<td align="right" valign="top" style="padding-top: 15px">
<label>Whatcha' Got?</label>
</td>
<td class="fieldareacontact">
<%= Html.TextArea("ContactCommentsOrQuestions", Model.ContactCommentsOrQuestions, new { Style = "width: 260px; height:150px", id = "CommentsOrQuestions", title = "comments", @class = "fieldscontact" })%>
</td>
<%= Html.ValidationMessage("Contacterror")%>
<% if (!ViewData.ModelState.IsValid)
{%><br /><%} %>
</tr>
<tr>
<td align="right" valign="top" style="padding-top: 15px">
</td>
<td align="right" valign="top" style="padding-top: 15px">
<input type="submit" id="submit" value="Submit" class="button" />
</td>
</tr>
</table>
<%} %>
</div>
Вот пара моих контроллеров:
public ActionResult Index()
{
ContactUsViewModel model = new ContactUsViewModel();
return View(model);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SendContactMessage(ContactUsViewModel model)
{
if (this.ModelState.IsValid)
{
try
{
// get contact configuration
DoSendMessage(model);
//return View(model);
return View(new ContactUsViewModel());
}
catch (Exception ex)
{
//TODO: log/notify error
//while( ex != null ){
//Response.Write( "<HR>" + ex.ToString() );
//ex = ex.InnerException;
//}
ModelState.AddModelError("Contacterror", "An unexpected error occured, please contact the webmaster.");
return View();
}
}
else
{
ModelState.AddModelError("Contacterror", "Please correct the above with a \"*\".");
return View(model);
}
}
DoSendMessage () просто отправляет уведомления по электронной почте, и я знаю, что эта функция работает, поскольку даже с ошибкой 500 я все равно могу каким-то образом получать электронные письма.
Вот ошибка 500:
Ошибка сервера в приложении '/'.
Представление 'SendContactMessage' или его мастер не найдены. Были найдены следующие местоположения:
~ / Просмотры / ContactUs / SendContactMessage.aspx
~ / Views / ContactUs / SendContactMessage.ascx
~ / Views / Shared / SendContactMessage.aspx
~ / Просмотры / Shared / SendContactMessage.ascx
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.InvalidOperationException: представление «SendContactMessage» или его мастер не найдены. Были найдены следующие местоположения:
~ / Views / ContactUs / SendContactMessage.aspx
~ / Views / ContactUs / SendContactMessage.ascx
~ / Views / Shared / SendContactMessage.aspx
~ / Views / Shared / SendContactMessage.ascx
Почему она ищет страницу, когда я вызываю метод? Пожалуйста, помогите, и спасибо всем заранее, извините, если это вопрос новичка, но я не смог найти больше ресурсов о том, почему у меня возникают эти ошибки.
Вот аннотация данных:
public class ContactUsViewModel
{
[Required(ErrorMessage = "*")]
public string ContactName { get; set; }
[Required(ErrorMessage = "*")]
//this is my own regular expression that I created
[RegularExpression("^[a-zA-Z0-9]+[\\.a-zA-Z0-9_]*[@][.a-zA-Z0-9]+[.]([a-z]{2,4})$", ErrorMessage = "*")]
public string ContactEmail { get; set; }
//[Required(ErrorMessage = "*")]
public string ContactCommentsOrQuestions { get; set; }
}