asp.net动态表单问题

时间:2009-10-06 19:35:17

标签: asp.net

我正在试图找到一种方法来创建可用于通用表单的页面。我的想法是,我们办公室的人会使用obout编辑来创建看起来像表单的html。这个html将保存到数据库中。当用户想要填写表格并邮寄时,他们会点击正确的表格检索,这个html将被放入标签控件中。所以现在页面上有一个标签控件,一些html作为标签的文本。用户可以键入他们想要的值。所以html可能看起来像这样:

<p style="margin: 0px; text-align: center;">
  Quarterly Report of Employees Serverd</p>
<br />
<br />
Employee:&nbsp;&nbsp;&nbsp;
<input type="text" style="width: 300px; height: 22px;" />
<br />
<br />
Address: &nbsp; &nbsp; &nbsp;
<input type="text" style="width: 300px; height: 22px;" />
<br />
<br />
<br />

用户可以在输入类型=“text”中键入一个名为John Smith的值,然后输入地址输入类型。

现在我想抓住所有这些HTML并将其发送给我。我知道如何做邮件部分,但抓住我没有得到的HTML。我可以在标签中获取html,但用户输入的文本不包含在该文本中。那么我如何获得用户输入的html和文本。任何想法。

感谢 香农

3 个答案:

答案 0 :(得分:0)

  1. 您需要对html进行编码以安全地存储它们。
  2. 使用文字控件代替标签或文本控件。
  3. 选中此link作为第一个选项。

    谢谢:)

    您可以使用以下方式:

    <input id="textField" type="text" runat="server"/>
    

    C# - 代码背后

    Mail.Send(textField.Value);
    

    并且不要忘记在asp.net的标题部分使用ValidateRequest="false"

    :)

答案 1 :(得分:0)

您可以遍历请求项以获取提交的值。如果要发送用于替换HTML输入字段的输入值的电子邮件,则必须解析表单HTML以查找输入字段:

<input type="text" id="firstName" name="firstName"
         style="width: 300px; height: 22px;" />

然后用

替换它
Request.Form["firstName"]

请注意,输入字段需要标识符,因此您可以从HTTP请求中检索它们。

希望这有帮助!

答案 2 :(得分:0)

首先,你真的想要在你的html中获得更多信息 - 至少在表单元素上有一些name属性:

Employee: <input type="text" name="employee" />

这样,您可以创建一个aspx页面,如:

<%@ Page language="C#" 
         autoeventwireup="true" 
         codebehind="DynamicForm.aspx.cs" 
         inherits="TempWebApp.DynamicForm" %>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title></title>
  </head>
  <body>
    <form id="form1" runat="server">
      <div>
        <asp:Literal id="m_HtmlForm" runat="server"></asp:Literal>
        <asp:Button id="m_SubmitForm" 
                    onclick="SubmitForm_OnClick" 
                    runat="server" 
                    text="Submit" />
      </div>
    </form>
  </body>
</html>

然后在您的代码中,您将数据库中的html读入文字控件的.Text

using System;
using System.Web.UI;

namespace TempWebApp
{
  public partial class DynamicForm : Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      m_HtmlForm.Text = getFormData();
    }

    protected void SubmitForm_OnClick(object sender, EventArgs e)
    {
      // Just showing we've picked up the form data.
      // You'll also see ViewState and others in here.
      foreach (string key in Request.Form.AllKeys)
      {
        m_HtmlForm.Text += string.Format("<br />Key: <b>{0}</b><br />Value:<br />{1}<br />", key, Request.Form[key]);
      }
    }

    private string getFormData()
    {
      // Excluded for brevity
    }
  }
}

显然,在你的按钮/回发处理程序中,你需要确保你拥有数据库中的原始HTML,然后修改输入元素以使用值为它们添加文本属性,或者更可能的是,替换它们使用实际值 - 否则如果用户开始使用单选按钮,复选框,选择列表等保存表单,则必须对表单进行大量额外解析。