Это просто предупреждение, в котором вам предлагается начать использовать новые методы подключения к вашему db, такие как объекты pdo
http://code.tutsplus.com/tutorials/php-database -access-are-you-doing-it-correct - net-25338
Руководство находится здесь
Там isn’t Связывать метод в ASP.NET. Когда ASP.NET анализирует Ваш файл и видит, что Вы используете
, он генерирует некоторый специальный код для него. Когда Вы используете, это не реальный вызов функции. Если ASP.NET анализирует код и обнаруживает оператор Bind (), он разделяет оператор на две части. Первая часть является односторонней частью привязки данных, которая заканчивает тем, что была только что регулярной Оценкой () вызов. Вторая часть является обратной частью, которая обычно является некоторым кодом вроде "имени строки = TextBox1. Текст", который захватывает значение назад из того, где это было связано. Однако, потому что ASP.NET должен проанализировать операторы Bind (), двухсторонняя привязка данных doesn’t поддерживают что-либо кроме, Связывают (). Например, следующий синтаксис недопустим, потому что он пытается вызвать произвольный код, и использование Связывают () одновременно:единственные форматы, поддерживаемые в двухсторонней привязке данных, Связывают ("поле") и Связывают ("поле", "строка формата {0}").
Вы могли использовать Оценку вместо, Связывают в Вашем EditItemTemplate. Также необходимо бросить для строкового представления:
<asp:Label ID="LabelDescription"
runat="server"
Text='<%# System.Web.HttpUtility.HtmlEncode((string)Eval("Description")) %>' />
Свяжите (), используется для Двухсторонняя Привязка данных , чтобы это работало, необходимо будет использовать событие RowUpdating gridview.
void GridView_RowUpdating(Object sender, GridViewUpdateEventArgs e)
{
foreach (DictionaryEntry entry in e.NewValues)
{
e.NewValues[entry.Key] = System.Web.HttpUtility.HtmlEncode(entry.Value.ToString());
}
}
Но будьте осторожны, если вы используете следующий код из Phaedrus и у вас есть колонка с чекбоксом!
void GridView_RowUpdating(Object sender, GridViewUpdateEventArgs e)
{
foreach (DictionaryEntry entry in e.NewValues)
{
e.NewValues[entry.Key] = System.Web.HttpUtility.HtmlEncode(entry.Value.ToString());
}
}
Потому что entry.Value.ToString()
сделает true из Checkbox в True и тогда вы не сможете сохранить его в поле базы данных!
Как уже объяснил Дарин Димитров, вы не можете использовать Bind
в качестве параметра функции. Итак, Text = '<% # System.Web.HttpUtility.HtmlEncode (Bind ("Description"))%>'
невозможно. С другой стороны, обычно здесь нет необходимости использовать HtmlEncode, потому что вы будете использовать Bind
с элементом управления, который позволяет изменять данные, например, вместе с TextBox (как в примере вашего EditItemTemplate). Но TextBox кодируется автоматически, поэтому вы можете безопасно вызвать Bind
без необходимости HtmlEncode:
<EditItemTemplate>
<asp:TextBox ID="TextBoxDescription" runat="server"
Text='<%# Bind("Description") %>'
ValidationGroup="EditItemGrid"
MaxLength="30" />
<asp:Validator ... />
</EditItemTemplate>
Если TextBox не будет кодировать автоматически с помощью Bind,
будет огромной дырой в безопасности ] (если вы не уверены, что ваши данные можно безопасно преобразовать в HTML без кодирования).
Но автоматическое кодирование НЕ относится, например, к этикетке.Хотя вы также можете использовать Bind
в свойстве Text метки, вывод метки НЕ кодируется автоматически - причина, по которой использование Bind
с меткой не является хорошей практикой. , поскольку вы не можете кодировать текст метки с помощью Bind
. Вместо этого используйте Eval
и оберните его в HtmlEncode, как вы это сделали в своем ItemTemplate: Text = '<% # System.Web.HttpUtility.HtmlEncode ((string) Eval ("Description")) %> '