ObjectDataSource.InsertParameters Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает коллекцию параметров, содержащую параметры, используемые свойством InsertMethod.
public:
property System::Web::UI::WebControls::ParameterCollection ^ InsertParameters { System::Web::UI::WebControls::ParameterCollection ^ get(); };
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.ParameterCollection InsertParameters { get; }
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
member this.InsertParameters : System.Web.UI.WebControls.ParameterCollection
Public ReadOnly Property InsertParameters As ParameterCollection
Значение свойства
Объект ParameterCollection, содержащий параметры, используемые методом, заданным свойством InsertMethod.
- Атрибуты
Примеры
Этот раздел содержит два примера кода. В первом примере кода показано, как использовать ObjectDataSource объект с бизнес-объектом и элементом DetailsView управления для вставки данных. Во втором примере кода представлен пример реализации Insert
метода , который используется в первом примере кода.
В следующем примере кода показано, как использовать ObjectDataSource элемент управления с бизнес-объектом и элементом DetailsView управления для вставки данных. Изначально отображает текстовые DetailsView поля, в которые можно ввести данные для новой NorthwindEmployee
записи, а также автоматически созданную кнопку Вставка . После ввода данных в поля DetailsView элемента управления нажмите кнопку Вставить . Свойство InsertMethod определяет, какой метод выполняет операцию вставки.
Если нажать кнопку Вставка , операция выполняется с помощью метода, указанного свойством InsertMethod , и всех параметров, указанных InsertParameters в коллекции. В этом примере кода в InsertParameters коллекции указан один параметр, соответствующий идентификатору супервизора. Это связано с тем, что даже если идентификатор отображается в Rows коллекции элемента DetailsView управления в виде BoundField объекта , он передается элементу ObjectDataSource управления в виде строки. Явно добавляя его в InsertParameters коллекцию со свойством Type , равным ObjectDataSource значению Int32 , он будет правильно передан в метод в виде Int32, а не в виде строки.
При выполнении Insert операции вызывается метод, определяемый свойством InsertMethod . Insert Если метод объекта имеет сигнатуру метода, включающую параметры, InsertParameters коллекция должна содержать параметры, имена которых соответствуют параметрам сигнатуры метода для успешного Insert завершения метода.
Важно!
Необходимо проверить любое значение параметра, полученное от клиента. Среда выполнения просто подставляет значение параметра в InsertMethod свойство .
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ObjectDataSource - C# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:detailsview
id="DetailsView1"
runat="server"
autogenerateinsertbutton="True"
autogeneraterows="false"
datasourceid="ObjectDataSource1"
defaultmode="Insert" >
<fields>
<asp:BoundField headertext="FirstName" datafield="FirstName" />
<asp:BoundField headertext="LastName" datafield="LastName" />
<asp:BoundField headertext="Title" datafield="Title" />
<asp:BoundField headertext="Courtesy" datafield="Courtesy" />
<asp:BoundField headertext="Supervisor" datafield="Supervisor" />
</fields>
</asp:detailsview>
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetEmployee"
insertmethod="InsertNewEmployeeWrapper"
typename="Samples.AspNet.CS.EmployeeLogic" >
<selectparameters>
<asp:parameter name="anID" defaultvalue="-1" />
</selectparameters>
<insertparameters>
<asp:parameter name="Supervisor" type="Int32" />
</insertparameters>
</asp:objectdatasource>
</form>
</body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ Import namespace="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ObjectDataSource - VB Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:detailsview
id="DetailsView1"
runat="server"
autogenerateinsertbutton="True"
autogeneraterows="false"
datasourceid="ObjectDataSource1"
defaultmode="Insert" >
<fields>
<asp:BoundField headertext="FirstName" datafield="FirstName" />
<asp:BoundField headertext="LastName" datafield="LastName" />
<asp:BoundField headertext="Title" datafield="Title" />
<asp:BoundField headertext="Courtesy" datafield="Courtesy" />
<asp:BoundField headertext="Supervisor" datafield="Supervisor" />
</fields>
</asp:detailsview>
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetEmployee"
insertmethod="InsertNewEmployeeWrapper"
typename="Samples.AspNet.VB.EmployeeLogic" >
<selectparameters>
<asp:parameter name="anID" defaultvalue="-1" />
</selectparameters>
<insertparameters>
<asp:parameter name="Supervisor" type="Int32" />
</insertparameters>
</asp:objectdatasource>
</form>
</body>
</html>
В следующем примере кода представлен пример реализации Insert
метода, который используется в предыдущем примере кода. Метод InsertNewEmployeeWrapper
добавляется к объекту EmployeeLogic
среднего уровня, который предоставляется в ObjectDataSource обзоре класса, чтобы упростить работу объекта с ObjectDataSource элементом управления в веб-сценариях без существенного перезаписи фактической бизнес-логики.
Для выполнения примера необходимо иметь NorthwindEmployee
класс, который предоставляется в обзоре ObjectDataSource класса. В этом примере показано, как подключиться ObjectDataSource к методу бизнес-объекта, который получает данные для новой записи базы данных с помощью параметров. В примере не добавляются записи в базу данных, так как Save
метод NorthwindEmployee
класса не содержит код для обновления базы данных.
// This InsertNewEmployeeWrapper method is a wrapper method that enables
// the use of ObjectDataSource and InsertParameters, without
// substantially rewriting the true implementation for the NorthwindEmployee
// or the EmployeeLogic objects.
//
// The parameters to the method must be named the same as the
// DataControlFields used by the GridView or DetailsView controls.
public static void InsertNewEmployeeWrapper (string FirstName,
string LastName,
string Title,
string Courtesy,
int Supervisor)
{
// Build the NorthwindEmployee object and
// call the true implementation.
NorthwindEmployee tempEmployee = new NorthwindEmployee();
tempEmployee.FirstName = FirstName;
tempEmployee.LastName = LastName;
tempEmployee.Title = Title;
tempEmployee.Courtesy = Courtesy;
tempEmployee.Supervisor = Supervisor;
// Call the true implementation.
InsertNewEmployee(tempEmployee);
}
public static void InsertNewEmployee(NorthwindEmployee ne) {
bool retval = ne.Save();
if (! retval) { throw new NorthwindDataException("InsertNewEmployee failed."); }
}
' This InsertNewEmployeeWrapper method is a wrapper method that enables
' the use of ObjectDataSource and InsertParameters, without
' substantially rewriting the true implementation for the NorthwindEmployee
' or the EmployeeLogic objects.
'
' The parameters to the method must be named the same as the
' DataControlFields used by the GridView or DetailsView controls.
Public Shared Sub InsertNewEmployeeWrapper(FirstName As String, LastName As String, Title As String, Courtesy As String, Supervisor As Integer)
' Build the NorthwindEmployee object and
' call the true implementation.
Dim tempEmployee As New NorthwindEmployee()
tempEmployee.FirstName = FirstName
tempEmployee.LastName = LastName
tempEmployee.Title = Title
tempEmployee.Courtesy = Courtesy
tempEmployee.Supervisor = Supervisor
' Call the true implementation.
InsertNewEmployee(tempEmployee)
End Sub
Public Shared Sub InsertNewEmployee(ne As NorthwindEmployee)
Dim retval As Boolean = ne.Save()
If Not retval Then
Throw New NorthwindDataException("InsertNewEmployee failed.")
End If
End Sub
Комментарии
Имена и типы параметров, содержащихся в InsertParameters коллекции, должны соответствовать именам и типам параметров, которые находятся в сигнатуре InsertMethod свойства. Имена параметров чувствительны к регистру. При работе с элементами управления с привязкой к данным, которые предоставляют параметры, такие как GridView элементы управления и DetailsView , ObjectDataSource элемент управления автоматически объединяет все параметры, явно указанные в коллекции, с параметрами, предоставляемыми элементом управления с привязкой к данным. Это важно, так как элементы управления с привязкой к данным всегда предоставляют свои параметры как String типы, и если сигнатура метода включает числовые типы или даты, необходимо явно включить параметр в коллекцию InsertParameters с правильным типом. ObjectDataSource В противном случае элемент управления пытается привести параметры в соответствии с типом, определенным параметрами в коллекции. Дополнительные сведения см. в разделе Использование параметров с элементом управления ObjectDataSource.
Свойство InsertParameters извлекает InsertParameters свойство , содержащееся в объекте ObjectDataSourceView , связанном с элементом ObjectDataSource управления .
Дополнительные сведения о слиянии параметров, времени существования объекта и разрешении методов см. в разделе InsertMethod.