2017-10-26 9 views
0

私はASP.NET MVC Webアプリケーションで、単一のフォームを含むビューを持っています。フォームにはいくつかの異なるモデルのフィールドがありますので、必要なすべてのモデルが含まれているViewModel(ソート)を使用しています。私は、フォームに入力されたデータを、あらかじめ決められたXML構造に基づいてXMLにシリアル化する必要があります。モデルのコードは含まれていません。モデルに含まれる可能性のある他のモデルの「ナビゲーション」プロパティと同様に、それぞれにpublicプロパティがあるためです(詳細は以下の例があります)。ここで1つのASP.NET MVCビューから複数のクラスのインスタンスをシリアル化するにはどうすればよいですか?

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> 

*は、これらの要素の複数があるかもしれないことを示してここに私のモデルがあります。

簡潔にするために「ルート」要素内の要素は省略していますが、これらは明らかにモデル内のプロパティでもあるフォーム内のフィールドです。

XML構造でわかるように、他のすべての要素が含まれているため、Transmission.csを自分の「ViewModel」として使用しています。ここでTransmissionモデルのコードは次のとおりです。

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

は、どのように私はこのXML構造に基づいて、XMLをフォームに入力されたデータをシリアルについて行くことができますか?シリアル化されたフォームデータからXMLファイルを作成したいと思います。

さらに詳しいことができれば、教えてください。また、これの一部がうまく設定されていない場合は、私に知らせてください。これは、ASP.NET MVCでこのようなことをする私の最初の試みです。ありがとう。

+0

Write Object Data to an XML File (C#)

XMLファイルにC#のオブジェクトを作成するには次のリンクを参照することができますすべてのフォームがそのインスタンスにアクセスできるようにします。何かが好きです:public static Transmission transmission {get;セット; }。 – jdweng

+0

あなたの問題は何ですか?それは1)あなたはいくつかのクラスを設計しており、XMLへのシリアライゼーションは失敗しますか?もしそうなら、例外の[mcve]と完全な 'ToString()'出力を共有してください。それとも2)あらかじめ定義されたXML構造を持っていて、それに合わせてC#クラスを設計する必要がありますか?後者の場合は、ヘルプが必要なサンプルXMLを参照する必要があります。 – dbc

+0

あなたの質問はちょうど3)* C#でXMLにシリアライズする方法*?そのような場合には、すでに多くの同様の質問がある。 [オブジェクトをXMLにシリアル化する](https://stackoverflow.com/q/4123590)または[単純なクラスをXMLにシリアル化/逆シリアル化する方法](https://stackoverflow.com/q/3356976)を参照してください。あなたはこれらのいずれかをチェックしましたか? – dbc

答えて

0

サーバー側にシリアル化されたフォームデータからXMLファイルを作成しようとすると、以下の解決策が有効になることがあります。

事前定義されたXML構造に基づいて、ViewModelにプロパティを配置します。フォームをサーバーに正常に投稿します。次に、投稿されたC#オブジェクトモデルをサーバー側のXMLに変換します。

あなたは、すべてのフォームが、私はまたに静的変数を追加した構造へのアクセス権を持っているので、クラスの伝送がグローバル空間であるべき

+1

彼が言っているように、直列化可能なクラスを直列化することができます。そのため、必要な書式を持つクラスをサーバー側に作成し、それをシリアル化してください。モデルがあなたが望むものを含んでいるように見えるので、あなたが提供したコードから多かれ少なかれ元の質問に向かっていたようです。 https://stackoverflow.com/questions/5877808/what-is-serializable-and-when-should-i-use-it – Greg

+0

@Gregポインタをありがとう。私はモデルやすべての点で私が必要とするものを既に持っていると思う。私は実際にデータをシリアル化してファイルを作成する方法を知ることにもっと興味があります。私はそれをクライアント側で行うのかサーバー側で行うのかを決めようとしています。私の傾向はサーバー側でそれを行うことですが、私は確信していません... – ic3man7019

+0

私が提供したリンクを確認してください。私はあなたがもっと深く掘り下げたいと思っていた気がしました。そこにはどのように進むべきかという事例があるはずです。最後の解決策にはコードがあります。 – Greg

関連する問題