То, что я делаю, - это создание веб-сайта, на котором выполняется дизайн в виде HTML-файлов, которые затем считываются на главную страницу с помощью System.IO.StreamReader.
и внутри html-шаблонов есть такие ключевые слова, как # USER.LOGIN #
что я заменяю функциями и т. д.
Проблема в том, что я заменяю # USER.LOGIN # на usercontrol, где есть форма для входа.
У меня есть функция, которая читает usercontrol в строку, и это работает.
но поскольку usercontrol загружается в строку, события не следующие.
поэтому, когда я отправляю форму входа, ничего не происходит (страница сообщений), но не может получить ни одно из полей формы ...
Примечание:
Я использую переписывание URL, поэтому URL http://www.domain.com/account/login
где account - account.aspx, а login - режим, в котором находится учетная запись.
Код для замены ключевого слова в цикле чтения потоков (строка pr)
If InStr(line, "#USER.LOGIN#") Then
line = line.Replace("#USER.LOGIN#", vbCrLf & userfunc.GetMyUserControlHtml("uc", "account_login.ascx", "/account/login/") & vbCrLf)
End If
И функции для чтения usercontrol
Public Shared Function GetMyUserControlHtml(contextKey As String, controllerfile As String, Optional ByVal formaction As String = "")
Dim myId As Guid = New Guid()
Return userfunc.RenderUserControl("~\Controllers\" & controllerfile, "", myId, formaction)
End Function
Public Shared Function RenderUserControl2(path As String, Optional ByVal formaction As String = "") As String
Using pageHolder As New Page(), _
viewControl As UserControl = DirectCast(pageHolder.LoadControl(path), UserControl), _
output As New StringWriter(), _
tempForm As New HtmlForm()
If formaction <> "" Then
tempForm.Action = formaction
Else
tempForm.Action = HttpContext.Current.Request.RawUrl
End If
tempForm.Controls.Add(viewControl)
pageHolder.Controls.Add(tempForm)
HttpContext.Current.Server.Execute(pageHolder, output, False)
Dim outputToReturn As String = output.ToString()
Return outputToReturn
End Using
End Function
Как бы ты это сделал?
Мне нужно, чтобы userlogin был жестко запрограммирован в usercontrol, но все еще мог размещать его где угодно, используя ключевое слово template.
Это также будет использоваться с другими функциями (подписка на новостную рассылку, чат и т. Д.)