Я использую проверку asp.net как обязательный полевой валидатор и т.д. Мне интересно, достаточно ли поставить эти валидаторы или что-то в бэкэнд? Я имею в виду, что он работает нормально, но я слышал, что валидация также должна выполняться в бэкэнд и т.д., Потому что проверка на стороне клиента может быть отключена, что приведет к сбою приложения? так это правда?
например
<asp:TextBox ID="txtFrom" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtFrom" Display="None" ErrorMessage=""
ForeColor="Red" >
</asp:RequiredFieldValidator>
To :
<asp:CalendarExtender ID="Calender" Format="dd/MMM/yyyy" runat="server" TargetControlID ="txtFrom"></asp:CalendarExtender>
<asp:TextBox ID="txtTo" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="CalendarExtender1" Format="dd/MMM/yyyy" runat="server" TargetControlID ="txtTo"></asp:CalendarExtender>
<asp:RequiredFieldValidator ID="RequiredFieldValisdator9" runat="server"
ControlToValidate="txtTo" Display="None" ErrorMessage=""
ForeColor="Red" >
</asp:RequiredFieldValidator>
Ребята, спасибо за добрые ответы, я попытался проверить страницу на странице отправки, вот так, правильно ли?
protected void btnGenReport_Click (отправитель объекта, EventArgs e) {//Это событие создает отчет о жалобах между конкретными датами.
try
{
//my report binding code
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
Page.Validate();
if (Page.IsValid)
{
txtFrom.Text = "Validated";
}
else
{
txtFrom.Text = "NOT VALIDATED";
}
}
Когда на клиенте нет javascript (маловероятно, но возможно), вы можете завершить свою проверку. Кроме того, кто-то может попытаться обойти ваши проверки, разместив данные непосредственно на вашем веб-сайте.
Для этих ситуаций вам всегда нужна проверка на стороне сервера.
Согласно MSDN: проверка элементов управления ASP.NET Server (выделение мое):
Что делает эти элементы управления проверки подлинности эффективными, так это то, что, когда запрашивается страница ASP.NET, содержащая эти элементы управления, механизм ASP.NET решает , выполнять ли проверку на клиенте или на сервере в зависимости от браузера, который создает запрос.
Кажется, что валидация использует одно, а не то, и другое.
Вы можете убедиться, что данные действительны, вызвав Page.Validate()
как это предложил Тим Шмельтер.
Да потому, что.NET validators содержат логику проверки как на стороне клиента, так и на стороне сервера. Как вы указали, кто-то может отключить javascript (или просто разместить информацию на самой странице), в этом случае проверка на стороне клиента не будет срабатывать, но логика на стороне сервера по-прежнему будет защищать вас.
Из MSDN:
Элементы управления проверкой выполняют проверку ввода кода сервера. Когда пользователь отправляет страницу на сервер, элементы проверки проверяются для проверки ввода пользователя, управления с помощью элемента управления. Если в любом из элементов управления ввода обнаружена ошибка проверки, сама страница настроена на недопустимое состояние, поэтому вы можете проверить достоверность перед запуском вашего кода. Проверка выполняется после инициализации страницы (то есть после обработки состояния представления и данных обратной передачи), но до того, как будут вызваны какие-либо изменения или обработчики событий щелчка.
Существует специальный валидатор, в котором вы можете добавить свои собственные проверки. На этом контроле вы должны выполнить проверку как на клиенте, так и на сервере по тем же причинам.
Это верно: проверка на стороне клиента гарантирует, что данные, которые вы получите, будут действительны до тех пор, пока пользователь не будет связываться с клиентом/подделать ответ/использовать другой клиент. Тем не менее, вы никогда не сможете быть уверены в этом, так что вам также потребуется проверка на стороне сервера.
Хорошей новостью является то, что если данные не пройдут эту проверку, это означает, что клиент сделал что-то противное, поэтому вам не нужно думать о приятном и полезном способе представить ему ошибку.
Page.Validate()
на стороне сервера.