Проверка на стороне клиента для моей формы, все еще спрашивает сервер, когда я нажимаю «отправить», и я получаю ошибку 500 - PullRequest
0 голосов
/ 22 декабря 2010

У меня сейчас есть пара вещей. У меня есть форма, на которой я пытаюсь выполнить проверку на стороне клиента, и она работает, однако, если я нажму кнопку отправить с одним из полей, которые не являются действительными, он все равно отправит информацию клиенту, который я не хочу делать, пока вся информация не будет правильной.

Другая проблема, с которой я сталкиваюсь, заключается в том, что я продолжаю получать «код 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; }
}

1 Ответ

0 голосов
/ 22 декабря 2010

Измените ваше else утверждение:

    else
    {
        ModelState.AddModelError("Contacterror", "Please correct the above with a \"*\".");
        return View("Index", model);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...