У меня есть приложение, которое я пишу, которое динамически создает файл .ICS, получая данные от пользователя. То, что я пытаюсь сделать, это сохранить данные в базе данных, а затем предложить файл .ICS для загрузки пользователем, чтобы они могли добавить его в свой календарь. Я бы хотел, чтобы все это произошло одним нажатием кнопки. Проблема, с которой я сталкиваюсь, - это когда кнопка нажата, она записывает файл, чтобы пользователь мог его загрузить, но он не хранит данные в базе данных. Он остается на странице и не отображается для обратной передачи.Ответ. .write для файла .ics, не позволяющего запускать код.
Public Sub AddToCalendar(ByVal Src As Object, ByVal e As EventArgs)
Try
Dim Subject As String = setDBText(txtSubject.text)
Dim Comment As String = setDBText(txtComment.text)
Dim StartDate As String = setDBDate(txtStartDate.value,txtStartTime.text)
Dim EndDate As String = setDBDate(txtEndDate.value,txtEndTime.text)
sqlStr = "INSERT INTO tblActivity(Subject,Comment,StartDate,EndDate) " & _
"VALUES(" & Subject & "," & Comment & "," & StartDate & "," & EndDate &")"
dc.CommandText = sqlStr
dc.ExecuteNonQuery()
lblTest.Text = "New Event Sucessfully Added"
'************
'** CREATE CODE TO BUILD ICS FILE
'************
Dim sbICSFile As StringBuilder = New StringBuilder()
Dim dtNow As DateTime = DateTime.Now
sbICSFile.AppendLine("BEGIN:VCALENDAR")
sbICSFile.AppendLine("VERSION:2.0")
sbICSFile.AppendLine("PRODID:-//AkonaDev/CalendarAppointment")
sbICSFile.AppendLine("CALSCALE:GREGORIAN")
sbICSFile.AppendLine("BEGIN:VEVENT")
' Define time zones.
' US/Eastern
sbICSFile.AppendLine("BEGIN:VTIMEZONE")
sbICSFile.AppendLine("TZID:US/Eastern")
sbICSFile.AppendLine("BEGIN:STANDARD")
sbICSFile.AppendLine("DTSTART:20071104T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
sbICSFile.AppendLine("TZOFFSETFROM:-0400")
sbICSFile.AppendLine("TZOFFSETTO:-0500")
sbICSFile.AppendLine("TZNAME:EST")
sbICSFile.AppendLine("END:STANDARD")
sbICSFile.AppendLine("BEGIN:DAYLIGHT")
sbICSFile.AppendLine("DTSTART:20070311T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
sbICSFile.AppendLine("TZOFFSETFROM:-0500")
sbICSFile.AppendLine("TZOFFSETTO:-0400")
sbICSFile.AppendLine("TZNAME:EDT")
sbICSFile.AppendLine("END:DAYLIGHT")
sbICSFile.AppendLine("END:VTIMEZONE")
' US/Central
sbICSFile.AppendLine("BEGIN:VTIMEZONE")
sbICSFile.AppendLine("TZID:US/Central")
sbICSFile.AppendLine("BEGIN:STANDARD")
sbICSFile.AppendLine("DTSTART:20071104T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
sbICSFile.AppendLine("TZOFFSETFROM:-0500")
sbICSFile.AppendLine("TZOFFSETTO:-0600")
sbICSFile.AppendLine("TZNAME:CST")
sbICSFile.AppendLine("END:STANDARD")
sbICSFile.AppendLine("BEGIN:DAYLIGHT")
sbICSFile.AppendLine("DTSTART:20070311T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
sbICSFile.AppendLine("TZOFFSETFROM:-0600")
sbICSFile.AppendLine("TZOFFSETTO:-0500")
sbICSFile.AppendLine("TZNAME:CDT")
sbICSFile.AppendLine("END:DAYLIGHT")
sbICSFile.AppendLine("END:VTIMEZONE")
' US/Mountain
sbICSFile.AppendLine("BEGIN:VTIMEZONE")
sbICSFile.AppendLine("TZID:US/Mountain")
sbICSFile.AppendLine("BEGIN:STANDARD")
sbICSFile.AppendLine("DTSTART:20071104T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
sbICSFile.AppendLine("TZOFFSETFROM:-0600")
sbICSFile.AppendLine("TZOFFSETTO:-0700")
sbICSFile.AppendLine("TZNAME:MST")
sbICSFile.AppendLine("END:STANDARD")
sbICSFile.AppendLine("BEGIN:DAYLIGHT")
sbICSFile.AppendLine("DTSTART:20070311T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
sbICSFile.AppendLine("TZOFFSETFROM:-0700")
sbICSFile.AppendLine("TZOFFSETTO:-0600")
sbICSFile.AppendLine("TZNAME:MDT")
sbICSFile.AppendLine("END:DAYLIGHT")
sbICSFile.AppendLine("END:VTIMEZONE")
' US/Pacific
sbICSFile.AppendLine("BEGIN:VTIMEZONE")
sbICSFile.AppendLine("TZID:US/Pacific")
sbICSFile.AppendLine("BEGIN:STANDARD")
sbICSFile.AppendLine("DTSTART:20071104T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
sbICSFile.AppendLine("TZOFFSETFROM:-0700")
sbICSFile.AppendLine("TZOFFSETTO:-0800")
sbICSFile.AppendLine("TZNAME:PST")
sbICSFile.AppendLine("END:STANDARD")
sbICSFile.AppendLine("BEGIN:DAYLIGHT")
sbICSFile.AppendLine("DTSTART:20070311T020000")
sbICSFile.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
sbICSFile.AppendLine("TZOFFSETFROM:-0800")
sbICSFile.AppendLine("TZOFFSETTO:-0700")
sbICSFile.AppendLine("TZNAME:PDT")
sbICSFile.AppendLine("END:DAYLIGHT")
sbICSFile.AppendLine("END:VTIMEZONE")
' Define the event
sbICSFile.Append("DTSTART;TZID=" + ddlStartTZ.Text + ":")
sbICSFile.Append(CDATE(txtStartDate.value).Year.ToString())
sbICSFile.Append(_
FormatDateTimeValue(CDATE(txtStartDate.value).Month))
sbICSFile.Append(_
FormatDateTimeValue(CDATE(txtStartDate.value).Day) + "T")
sbICSFile.AppendLine(ddlStartTime.SelectedValue)
sbICSFile.Append("DTEND;TZID=" + ddlEndTZ.Text + ":")
sbICSFile.Append(CDATE(txtStartDate.value).Year)
sbICSFile.Append(_
FormatDateTimeValue(CDATE(txtStartDate.value).Month))
sbICSFile.Append(_
FormatDateTimeValue(CDATE(txtStartDate.value).Day) + "T")
sbICSFile.AppendLine(ddlEndTime.SelectedValue)
sbICSFile.AppendLine("SUMMARY:" + txtEventSubject.Text)
sbICSFile.AppendLine("DESCRIPTION:" + txtEventDescription.Text)
sbICSFile.AppendLine("UID:1")
sbICSFile.AppendLine("SEQUENCE:0")
sbICSFile.Append("DTSTAMP:" + dtNow.Year.ToString())
sbICSFile.Append(FormatDateTimeValue(dtNow.Month))
sbICSFile.Append(FormatDateTimeValue(dtNow.Day) + "T")
sbICSFile.Append(FormatDateTimeValue(dtNow.Hour))
sbICSFile.AppendLine(FormatDateTimeValue(dtNow.Minute) + "00")
sbICSFile.AppendLine("END:VEVENT")
sbICSFile.AppendLine("END:VCALENDAR")
Response.ContentType = "text/calendar"
Response.AddHeader("content-disposition", _
"attachment; filename=CalendarEvent1.ics")
Response.Write(sbICSFile)
Response.End()
Catch exc As Exception
lblError.text = exc.toString
End Try
У вас есть все, что в Try/уловом .. При отладке, где это не получится? – InbetweenWeekends
Это то, что он не проваливает и не бросает никаких ошибок. Он ведет себя так, как будто он завершает работу, но после того, как страница записывает файл для загрузки, он не отображается для обратной передачи. Я считаю, что это не сохранение данных в базе данных. – Jonathan
Этот код является безумным, уязвимым для SQL-инъекций. Это практически попрошайничество, чтобы его взломали. Используйте параметризованные запросы вместо строковой конкатенации для создания своих SQL-операторов. –