Я получаю следующее сообщение об ошибке при попытке вставить команду ввода источника данных:
Процедура или функция 'student_insert' ожидает параметр '@password', который не был предоставлен.
У меня большинство параметров, заданных на странице ASCX, за исключением «пароля», так как мне нужно сделать некоторые манипуляции с ним перед сохранением в БД:
<InsertParameters>
<asp:Parameter Name="email" Type="String" />
<asp:Parameter Name="first_name" Type="String" />
<asp:Parameter Name="last_name" Type="String" />
<asp:Parameter Name="university" Type="String" />
<asp:Parameter Name="program" Type="String" />
<asp:Parameter Name="student_number" Type="String" />
<asp:ControlParameter Name="graduation_date" Type="DateTime" ControlID="ctl00$ContentPlaceHolder$ctl01$frmStudents$txtGradDate" PropertyName="Text" />
<asp:ControlParameter Name="student_card_image_name" Type="String" ControlID="ctl00$ContentPlaceHolder$ctl01$frmStudents$FUStudent" PropertyName="FileName" />
<asp:ControlParameter Name="id_card_image_name" Type="String" ControlID="ctl00$ContentPlaceHolder$ctl01$frmStudents$FUID" PropertyName="FileName" />
</InsertParameters>
C #:
protected void datasource_Inserting(object sender, SqlDataSourceCommandEventArgs e) {
ASCIIEncoding encoding = new ASCIIEncoding();
ControlParameter cp = new ControlParameter("@password", DbType.Binary, "ctl00$ContentPlaceHolder$ctl01$frmStudents$txtPassword", "Text");
FormView frmStudents = (FormView)FindControl("frmStudents");
TextBox txtPassword = (TextBox)(frmStudents.FindControl("txtPassword"));
datasource.InsertParameters.Add("password", DbType.Binary, encoding.GetBytes(Cryptogrpahy.Encrypt(txtPassword.Text, basepage.crypt_password)).ToString());
}
Когда я прохожу метод с отладчиком, я вижу все мои параметры InsertParameters со значениями ...
Кроме того, отметим, что это не будет успешно выполнено из-за типа DB, поскольку я обычно использую VarBinary в обычном SQLParamater.