【问题标题】:Access POST form data and write it in an xml file?访问 POST 表单数据并将其写入 xml 文件?
【发布时间】:2012-06-22 08:07:38
【问题描述】:

所以我一直在到处寻找一个好的解决方案,但没有发现任何有用的东西。所以基本上我想做的是在 .aspx Web 表单的代码隐藏中使用 C# 访问(发布)表单数据,然后将该数据写入 xml(当然还要创建 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 writer 类 --> http://msdn.microsoft.com/de-de/library/system.xml.xmlwriter(v=VS.80).aspx,但我真的不知道从哪里开始。

如果有人可以帮助我,或者这个问题之前已经在这里回答过,我只是忽略了它,所以你可以在那里链接我,我将不胜感激。

提前致谢!

【问题讨论】:

  • 哪一部分给您带来了问题——获取数据还是创建 XML?它们是完全独立的方面,您应该就其中一个或两个单独的问题提出问题。
  • 其实我在整个过程中都有问题,所以两者都有。好吧,我认为这两个过程是相互关联的,所以我在一个问题中问他们......
  • 但它们并没有本质上连接。编程的很大一部分是将一项大任务分解成更小的任务。这里最初的两个较小的是从表单中提取数据,并将“一些数据”(无论它来自何处)写入 XML 文档。

标签: c# asp.net forms post


【解决方案1】:

您不能在 ASP.NET WebForms 中使用 &lt;form&gt; 标记,因为已经有一个 &lt;form runat="server"&gt; 并且 HTML 表单不能嵌套。所以在这里你有两个不同的任务要完成:

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

并且在您后面的代码中会公开这 2 个值:

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);
        }
    }
}

【讨论】:

  • 非常感谢,我会试试这个。这也可以在一个文件中完成?如果我在 contact.aspx 中有我的表单,我仍然会将 PostBackUrl 设置为 Contact.aspx,然后在同一个代码隐藏中设置这两个东西?
  • 是的,可以在一个文件中完成。在这种情况下,它甚至更容易。您根本不需要使用 PostBackUrl 属性,也不需要公开公开 FirstName 和 LastName 属性,因为您已经可以访问它们。在这种情况下,只需订阅 LinkBut​​ton 的 OnClick 事件并在那里执行 XML 生成部分。
  • 那么会是这样吗?:var xml = new XDocument( new XElement( "user", new XElement("firstName", EdtFirstName.Text,(...) OnClick 事件值是多少?对不起,我对这一切都不熟悉:)
  • 是的,你可以直接使用EdtLastName.Text。然后OnClick="BtnGenerateXMLClick"。最后,您将在生成 XML 文件的代码后面声明回调:protected void BtnGenerateXMLClick(object sender, EventArgs e) { ... }。最后,您应该通过此处的 ASP.NET 入门教程:asp.net/web-forms 至少学习一些基本概念。
  • 好的,非常感谢!我想我得通读一遍:)
猜你喜欢
  • 2018-09-28
  • 2013-08-27
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
相关资源
最近更新 更多