Używam "jQuery Validate Unftrusive" z Brzytwką ASP.NET MVC3.jQuery Validate Unobtrusive nie działa dla TextArea
Mam stronę z "Uwagi" formularza, takich jak to:
model
public class CommentModel
{
[Required]
public string Name { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[DataType(DataType.Url)]
[Display(Name = "Website URL")]
public string WebsiteUrl { get; set; }
[Required]
public string Message { get; set; }
}
Zobacz
@using (Html.BeginForm("AddComment", "Blog", new { @articleID = article.ID }))
{
<p>
@Html.LabelFor(m => m.commentModel.Name)
@Html.TextBoxFor(m => m.commentModel.Name)
@Html.ValidationMessageFor(m => m.commentModel.Name)
</p>
<p>
@Html.LabelFor(m => m.commentModel.Email)
@Html.TextBoxFor(m => m.commentModel.Email)
@Html.ValidationMessageFor(m => m.commentModel.Email)
</p>
<p>
@Html.LabelFor(m => m.commentModel.WebsiteUrl)
@Html.TextBoxFor(m => m.commentModel.WebsiteUrl)
@Html.ValidationMessageFor(m => m.commentModel.WebsiteUrl)
</p>
<p>
@Html.LabelFor(m => m.commentModel.Message)
@Html.TextAreaFor(m => m.commentModel.Message)
@Html.ValidationMessageFor(m => m.commentModel.Message)
</p>
<p>
<input type="submit" value="Submit Comment" />
</p>
}
Jednak, gdy formularz jest składany, tylko Name
i Email
zwraca błąd sprawdzania poprawności, gdy Message
powinno być zbyt:
Jeśli zmienię Message
z TextAreaFor
do TextBoxFor
, wtedy walidacja działa poprawnie.
Dlaczego tak jest i jak mogę sprawdzić poprawność działania w moim polu tekstowym?
Warto również zauważyć, że nie musiałem pisać żadnego konkretnego jQuery dla tego formularza. Poszedłem za tutorialem, który wyjaśnił, że nie jest to wymagane, ponieważ wszystkie obsługiwane przez MVC3.
Czy możesz podać swój kod kontrolera? Czy uwzględniłeś również jquery.validate i jquery.validate.unobtrusive w swoim układzie lub widoku? –
@ ron.defreitas Jaką metodę kontrolera? Z pewnością metoda 'HttpPost' nie byłaby trafna, ponieważ nie została osiągnięta, ponieważ zapobiega to walidacja po stronie klienta? Sprawdziłem plik Layout, dodałem: 'jquery-1.5.1.min.js',' jquery.validate.min.js' & 'jquery.validate.unobtrusive.js'. – Curt
Czy można wyświetlić renderowane źródło formularza i upewnić się, że atrybut sprawdzania poprawności danych został dodany do obszaru tekstowego, podobnie jak pozostałe pola? Czy próbowałeś przejść przez POST swojego formularza, aby sprawdzić, czy backend uważa, że dane wejściowe znajdują się w polu? –