【发布时间】:2018-03-30 19:23:34
【问题描述】:
我有一些大的、专门根据客户要求格式化的带有输入的表格。它看起来类似于以下...
<body id="Body" class="Window" runat="server">
<form id="Form" runat="server" defaultbutton="SubmitLinkButton">
<!-- Markup for a the SubmitLinkButton and DropDownList -->
<!-- to pick which Table is shown -->
<asp:Table ID="Table1" runat="server">
<asp:TableRow class="row" runat="server">
<asp:TableCell runat="server">
<pre> Some Input1 </pre>
<pre>___________________</pre>
<pre>|___<asp:Textbox ID="Textbox1" runat="server"></asp:Textbox>____|</pre>
<pre>|_________________|</pre>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
<asp:Table ID="Table2" runat="server">
<asp:TableRow class="row" runat="server">
<asp:TableCell runat="server">
<pre> Some Input2 </pre>
<pre>___________________</pre>
<pre>|___<asp:Textbox ID="Textbox2" runat="server"></asp:Textbox>____|</pre>
<pre>|_________________|</pre>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</form>
</body>
平淡无奇,对吧?
根据在 DropDownList 中选择的选项,四个表中只有一个可见或不可见。每个表都有超过 30-40 个输入,每个输入区域的格式都是唯一的。所有格式都以相同的方式(^^^如上^^^),但一个部分可能有 3 个输入和大量文本或 8 个输入和少量文本或没有输入,只有一段文本。
希望所有这些都有意义。
我需要弄清楚的是如何让用户能够通过SubmitLinkButton“提交”表单,这将向设置的一组电子邮件地址发送一封看起来与他们填写的表单相同的电子邮件SystemFramwork.config。
我尝试使用Visual Basic 和RenderControl() 来执行此操作,但我不断收到错误消息,提示我的文本框需要位于其中包含runat="server" 的表单中,正如您在我的代码中看到的那样上面我有。所以,我不确定那里发生了什么。
由于表单的格式如此定制,如果我不能以某种方式将 HTML 表单从页面呈现到电子邮件以使它们看起来相同,除了手动将标记添加到电子邮件之外,我不知道任何其他选择,这似乎是在浪费时间并在项目中进行冗余。
任何见解将不胜感激!
我目前仍在使用看起来像这样的伪解决方案...
Public Sub SubmitLinkButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SubmitLinkButton.Click
Dim result As String = vbNull
Dim stringWriter As New StringWriter()
Dim htmlWriter As New HtmlTextWriter(stringWriter)
'If the user selected something with the DropDown
If (DDL_Selection IsNot "")
Dim email As New MailMessage(FromConfigVar, ToConfigVar)
email.Subject = DDL_Selection.SelectedValue & " Table"
email.IsBodyHtml = True
Select Case DDL_Selection
Case "Table1"
Try
htmlWriter.RenderBeginTag(HtmlTextWriterTag.Table)
Table1.RenderControl(htmlWriter)
htmlWriter.RenderEndTag()
htmlWriter.Flush()
result = stringWriter.ToString()
Finally
htmlWriter.Close()
stringWriter.Close()
End Try
End Select
mailMessage.Body = result
Else
'Do nothing
End If
End Sub
同样,这个解决方案不起作用,我认为我什至没有接近正确的轨道。只是想我会展示我的尝试。
【问题讨论】:
-
你能截个图发过来吗?
-
哪一部分?错误还是表格样本?
-
啊,不,我的意思是作为问题的答案,你能不能截个屏幕截图(必要时还可以提交表单)并发送给电子邮件列表中的人。
-
@wazz,表单由用户提交。假设用户不知道如何使用计算机,因为那是我能得到的最接近事实的情况,哈哈!
标签: asp.net vb.net forms email html-email