2012-06-22 106 views
2

所以我一直在尋找一個好的解決方案無處不在,但沒有發現任何有用的東西。所以基本上我想要做的是用C#訪問(後)表單數據在.aspx Web表單的代碼隱藏,然後將數據寫入到一個XML(也可以創建過程的XML)。訪問POST表單數據並將其寫入xml文件?

讓我們說我有這樣的事情:

<asp:Content runat="server" ContentPlaceHolderID="pageContent"> 

    <form id="form1" method="post" name="contact" action="contact.aspx"> 
     (...) 
     <input type="button" value="Send" id="submit" 
    </form> 

</asp:Content> 

現在我想這並不重要的表單內。

我發現這個XML作家類 - >http://msdn.microsoft.com/de-de/library/system.xml.xmlwriter(v=VS.80).aspx,但我真的不知道從哪裏開始。

如果有人能幫助我與也許這個問題已經在這裏回答之前,我只是忽視它,所以你可以有聯繫我,我會表示感謝。

在此先感謝!

+1

哪一部分是給你的問題 - 獲取數據,或創建XML?他們完全是單獨的方面,你應該問一個關於他們中的一個或另一個的問題,或者兩個單獨的問題。 –

+0

好其實我有整個過程的問題,所以bboth他們。嗯,我認爲是這兩個過程相互連接我問他們一個問題... – webster69

+2

但他們不是* *內在連接。編程的很大一部分是將一項重大任務分解爲較小的任務。這裏最初的兩個較小的是從表單提取數據,並將「一些數據」(無論它來自何處)寫入XML文檔。 –

回答

2

您不能在ASP.NET WebForms中使用<form>標記,因爲已經存在<form runat="server">並且HTML表單不能嵌套。所以在這裏你有2個不同的任務來完成:

  1. 發送POST數據到Contact.aspx
  2. 使用在Contact.aspx POST數據生成一個XML文件

因此,讓我們來解決這兩個分開的任務從第一個開始。讓我們假設你有一個Default.aspx的Web表單中,用戶將輸入一些數據:

<div> 
    First name: <asp:TextBox ID="EdtFirstName" runat="server" /> 
</div> 
<div> 
    Last name: <asp:TextBox ID="EdtLastName" runat="server" /> 
</div> 

<asp:LinkButton ID="BtnSubmit" runat="server" PostBackUrl="Contact.aspx" Text="Generate XML" /> 

,並在後面的代碼,你會露出兩個值:

public partial class _Default : System.Web.UI.Page 
{ 
    public string FirstName 
    { 
     get { return EdtFirstName.Text; } 
    } 

    public string LastName 
    { 
     get { return EdtLastName.Text; } 
    } 
} 

現在我們可以移動到實施生成內部Contact.aspx XML文件的第二個任務:

public partial class Contact : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     var page = (Page.PreviousPage as _Default); 
     if (page != null) 
     { 
      var xml = new XDocument(
       new XElement(
        "user", 
        new XElement("firstName", page.FirstName), 
        new XElement("lastName", page.LastName) 
       )  
      ); 
      var file = Server.MapPath("~/test.xml"); 
      xml.Save(file); 
     } 
    } 
} 
+0

非常感謝,我會試試這個。這也可以在一個文件中完成?如果我在contact.aspx中有我的表單,我仍然會將PostBackUrl設置爲Contact.aspx,然後將這兩個事物設置爲相同的代碼隱藏? – webster69

+0

是的,它可以在一個文件中完成。在這種情況下,它更容易。您根本不需要使用'PostBackUrl'屬性,因爲您已經有權訪問它們,所以不需要公開公開FirstName和LastName屬性。在這種情況下,只需訂閱LinkBut​​ton的「OnClick」事件並在那裏執行XML生成部分。 –

+0

所以會是這樣的?:然後 'VAR XML =新的XDocument( 新的XElement( 「用戶」, 新的XElement( 「名字」,EdtFirstName.Text,(...)' 'OnClick'事件值是什麼? 對不起,我是新來的:) – webster69

相關問題