2009-10-06 104 views
1

我想找出一種方法來創建可用於通用表單的頁面。我想到的是,在我們的辦公室裏有人會使用obout編輯來創建看起來像一個表單的html。這個html將被保存到數據庫中。當用戶想要填寫表單併發送郵件時,他們會點擊正確的表單檢索,並將此html放入標籤控件中。所以,現在頁面上有一個標籤控件,其中一些html作爲標籤的文本。用戶可以輸入他們想要的值。因此,HTML可能是這個樣子:asp.net動態表單問題

<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 /> 

用戶鍵入的輸入型=「文本」一說,約翰·史密斯的值,然後輸入到地址輸入型爲好。

現在我想抓住所有這些html並將它郵寄出去。我知道如何做郵件部分,但抓住我沒有得到的HTML。我可以抓取標籤中的html,但該用戶輸入的文本不包含在該文本中。那麼如何獲得該HTML和用戶輸入的文本?任何想法。

感謝 香

回答

0
  1. 你需要編碼的HTML來安全地存儲它們。
  2. 使用文字控件代替標籤或文本控件。

請檢查此link作爲第一個選項。

謝謝:)

,你可以用這樣的方式:

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

C# - 代碼隱藏

Mail.Send(textField.Value); 

,不要忘了在標題部分使用ValidateRequest="false"的asp.net ..

:)

+0

謝謝你的迴應。我可能會誤解你,但我不相信這將有助於它仍然不會抓取員工或地址輸入類型文本中的數據輸入。我之前使用過編碼,並計劃再次使用它,但我無法將輸入文本包含在我要做的事情中。任何其他的想法。 – jvcoach23

+0

對不起,我誤會了你:'( – Tarik

0

您可以迭代請求項目以獲取提交的值。如果你想送其替換輸入值的HTML輸入字段的電子郵件,你必須解析出的HTML表單找到你的輸入字段:

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

然後用

更換
Request.Form["firstName"] 

請注意,輸入字段將需要標識符,以便您可以從HTTP請求中檢索它們。

希望這會有所幫助!

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,然後修改輸入元素以使用該值向文本屬性添加文本屬性(或更可能)替換他們與實際值 - 否則,如果你的用戶開始用單選按鈕,複選框,選擇列表等保存表單,你將不得不做很多額外的表單解析。

+0

感謝您的幫助..這有助於一噸。我會標記它,但我還沒有足夠的積分。再次,謝謝 香農 – jvcoach23

+0

沒有probs - 你現在應該能夠高興起來,並且你總是可以接受一個答案;) –