如何从单个ASP.NET MVC视图序列化多个类的实例?

时间:2017-10-26 13:29:20

标签: c# xml asp.net-mvc serialization asp.net-mvc-5

我的ASP.NET MVC Web应用程序中有一个包含单个表单的View。表单包含来自几个不同模型的字段,因此我使用的ViewModel(各种类型)包含所有必需的不同模型。我需要能够根据预定的XML结构将输入到表单中的数据序列化为XML。我没有包含我的模型的代码,因为每个模型中只有公共属性,以及模型可能包含的其他模型的“导航”属性(下面还有一个示例)。这是我的模特:

Cargo.cs
CargoDetails.cs
Consignee.cs
Request.cs
Shipper.cs
Transmission.cs
TransmissionHeader.cs

以下是所需的XML结构:

<Transmission>
    <TransmissionHeader>
        .
        .
    </TransmissionHeader>
    *<Request>
        .
        .
        *<Cargo>
            <Shipper>
                .
                .
            </Shipper>
            <Consignee>
                .
                .
            </Consignee>
            *<CargoDetails>
                .
                .
            </CargoDetails>
        </Cargo>
    </Request>
</Transmission>

*表示可能存在多个这些元素。

为简洁起见,我省略了“root”元素中的元素,但这些显然是表单中的字段,它们也是模型中的属性。

我使用Transmission.cs作为我的“ViewModel”,因为正如您在XML结构中所看到的,它包含所有其他元素。以下是Transmission模型的代码:

[Serializable]
    public class Transmission
    {
        public TransmissionHeader TransmissionHeader { get; set; }
        public List<Request> Requests { get; set; }
    }

如何基于此XML结构将输入到表单中的数据序列化为XML?我想从序列化表单数据创建一个XML文件。

如果我可以进一步解释,请告诉我。此外,如果任何部分设置不佳,请告诉我。这是我第一次尝试在ASP.NET MVC中做这样的事情。谢谢。

1 个答案:

答案 0 :(得分:0)

如果您尝试从服务器端的序列化表单数据创建XML文件,则以下解决方案可能有效。

基于预定的XML结构,在ViewModel中排列属性。将表单正常发布到服务器。然后将发布的C#对象模型转换为服务器端的XML。

您可以参考以下链接将C#Object写入XML文件

Write Object Data to an XML File (C#)