На первом этапе asp:Wizard
У меня есть логин, использующий DirectoryServices
для аутентификации. Но тогда я хочу взять UserID
, Date
и SCOPE_IDENTITY()
и вставить его в таблицу. Вот что я пробовал. Когда я нажимаю дальше, информация не вставлена, но функция AD проверяется правильно. Я не уверен, что я делаю неправильноКак я могу выполнить вставку SQL в активном шаге мастера?
protected void OnActiveStepChanged(object sender, EventArgs e)
{
//check for the employee in AD
string Domain = "mydomain.local";
string EmployeeID = txtEmpID.Text;
string Password = txtPassword.Text;
string ADStatus = null;
// If the ActiveStep is changing to Step2, check to see whether the
// user authenticated the AD Login Process. If it is, skip to the Step2 step.
if (Wizard1.ActiveStepIndex == Wizard1.WizardSteps.IndexOf(this.WizardStep2))
{
if (AuthenticateActiveDirectory(Domain, EmployeeID, Password) == true)
{
//If success ...
ADStatus = "Success";
Session["SessionADStatus"] = ADStatus;
string strDepartment = ddlDepartment.SelectedValue;
SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString);
SqlCommand cmd1 = new SqlCommand("INSERT INTO [pharm_OrderID](UserID, RequestType, CreateDate) values (@UserID, @RequestType, @CreateDate);", conn1);
cmd1.CommandType = CommandType.Text;
conn1.Open();
string strUserID = txtEmpID.Text;
cmd1.Parameters.Add("@UserID", SqlDbType.NVarChar, 50);
cmd1.Parameters["@UserID"].Value = strUserID;
string strRequestType = ddlReturnType.SelectedValue;
cmd1.Parameters.Add("@ReturnType", SqlDbType.NVarChar, 50);
cmd1.Parameters["@ReturnType"].Value = strRequestType;
string strCreateDate = lblOrderAttemptTime.Text;
cmd1.Parameters.Add("@CreateDate", SqlDbType.NVarChar, 50);
cmd1.Parameters["@CreateDate"].Value = strCreateDate;
conn1.Dispose();
cmd1.Dispose();
Wizard1.ActiveStepIndex = Wizard1.WizardSteps.IndexOf(this.WizardStep2);
}
else
{
ADStatus = "Failure";
Session["SessionADStatus"] = ADStatus;
lblADError.Visible = true;
lblADError.Text = "Unable to authenticate Employee ID or Password.";
Wizard1.ActiveStepIndex = Wizard1.WizardSteps.IndexOf(this.WizardStep1);
}
}
}
Прежде всего, получите код вашего слоя данных из обработчика событий пользовательского интерфейса. – paqogomez
@paqogomez почему? – Skullomania
Если у вас есть этот код в обработчике событий, его нельзя использовать повторно. [Архитектура N-уровня] (http://en.wikipedia.org/wiki/Multitier_architecture) будет определять, что у вас есть уровень данных (набор классов), который взаимодействует с базой данных, бизнес-уровнем, который обрабатывает бизнес-логику и пользовательский интерфейс, который является вашим интерфейсом. – paqogomez