Проблема с sql-инструкцией и PostBackUrl

#asp.net #sql #postbackurl

#asp.net #sql #postbackurl

Вопрос:

У меня есть sql-инструкция, которую я разместил на этом сайте, и я применил на своем веб-сайте, который работает и вставляет имя пользователя и информацию в базу данных вскоре после того, как пользователь нажимает кнопку отправки.

Однако этого не происходит, когда я устанавливаю свойство PostBackUrl кнопок отправки. Когда я делаю это, данные не вставляются, и вся функция, которая выполняет инструкцию insert, кажется, пропущена (поскольку я намеренно пытался допустить ошибку,, и исключение не было выдано).

Как я могу заставить PostBackUrl работать, чтобы у данных было время для вставки?

рабочая sqlStatment:

  insertCommand.Append("DECLARE @TopicsId int; INSERT INTO Topics(Theme,Topics,Date)");
    insertCommand.Append("VALUES(@topic,@subTopic,GETDATE())");
    insertCommand.Append("SET @TopicsId = SCOPE_IDENTITY()");

    insertCommand.Append(" INSERT INTO Threads(UsersID,TopicsID,Date,ThreadTitle,ThreadParagraph,ThreadClosed,Views,Replies,PageNumber)");
    insertCommand.Append(" SELECT @uniqueIdentifier,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0,0,0,FLOOR(Count(t.TopicsID)/20)");
    insertCommand.Append(" FROM Threads AS d INNER JOIN Topics AS t ON d.TopicsID=t.TopicsID");
  

работает, когда:

 <asp:Button ID="sendButton1" runat="server" Text="שלח" Width="60px" 
            onclick="sendButton1_Click"  />
  

нерабочее SQLStatement при:

 <asp:Button ID="sendButton1" runat="server" Text="שלח" Width="60px" 
            onclick="sendButton1_Click" PostBackUrl="~/AnswerQuestion.aspx" />
  

Комментарии:

1. Пожалуйста, опубликуйте свой код, чтобы мы могли разобраться в вашей проблеме.

2. обновлено, см. выше. когда я делаю postBackURL..it кажется, что нет времени вставлять данные .. и он быстро переходит к post URL и пропускает инструкцию insert sql

3. Это второе INSERT выглядит подозрительно. На мой взгляд, это будет дублировать каждую строку, находящуюся в данный момент в Threads таблице, но с новым @TopicsID значением для TopicsID . Это то, чего вы хотите?

4. Что я хочу, так это перекрестно опубликовать страницу после события отправки щелчка.. sql statemetn работает .. событие click и postbackurl не работают должным образом together..so я разделил их .. я не знаю, когда запускать и передавать его на другую страницу

Ответ №1:

Это приведет cross-page postback . При нажатии кнопки управления текущая страница будет отправлена по указанному URL-адресу в свойстве PostBackUrl кнопки. В этом случае ваше событие нажатия кнопки не будет запущено.

Для получения подробной информации, пожалуйста, ознакомьтесь с MSDN

EditL Почему бы не попробовать это просто, например…

 protected void Button1_Click(object sender, EventArgs e)
{
///.....Your Code.....
insertCommand.Append("DECLARE @TopicsId int; INSERT INTO Topics(Theme,Topics,Date)");
insertCommand.Append("VALUES(@topic,@subTopic,GETDATE())");
insertCommand.Append("SET @TopicsId = SCOPE_IDENTITY()");

insertCommand.Append(" INSERT INTO Threads(UsersID,TopicsID,Date,ThreadTitle,ThreadParagraph,ThreadClosed,Views,Replies,PageNumber)");
insertCommand.Append(" SELECT @uniqueIdentifier,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0,0,0,FLOOR(Count(t.TopicsID)/20)");
insertCommand.Append(" FROM Threads AS d INNER JOIN Topics AS t ON d.TopicsID=t.TopicsID");

 ///..At the end add this......
 Response.Redirect("~/AnswerQuestion.aspx");
}
  

Комментарии:

1. наконец { SQLConnect. Close(); HttpContext.Current. Сервер. Передача («~/AnswerQuestion.aspx»); } даже когда я делаю это, без свойства postbackurl. он не будет вставлять мои данные .. почему

2. Как я могу настроить это так, чтобы запускалось событие click, а затем запускалось другое событие для отправки страницы …?

3. используйте ответ. Перенаправление («~/AnswerQuestion.aspx»); в конце кода я только что обновил свой ответ. теперь вы можете получить представление и удалить URL обратной отправки.

4. Ваш ответ правильный. Это то, что я сделал до того, как вы опубликовали свой комментарий.. я использовал сервер. Передача. теперь все работает