2011-01-03 12 views
0

私はいくつかのプロジェクトのWebパーツに割り当てられています。このプロジェクトでは2つの部分、 ウィンドウとWebです。ウィンドウパーツでは、ユーザーは独自のカスタマイズテンプレート スタジオIDE、あなたはaddformと他のコントロールを加えることができます。そして、このテンプレート をXMLファイルに保存します。私の義務は、このXMLファイルから読み込んでwebformを作成することです。 ウェブパーツの場合、ウィンドウパーツから作成した情報のみを表示します。 私たちのXMLファイルフォーマットは以下のようです。ウェブパーツの場合は、asp.net mvcを使ってc#.netで開発しました。asp.net mvcでxmlからWebフォームを作成

<Object type="System.Windows.Forms.Form"> 
    <Object type="System.Windows.Forms.Label"> 
    <Property name="Name">lblCity</Property> 
    <Property name="Text">City</Property> 
    </Object> 
    <Object type="System.Windows.Forms.TextBox"> 
    <Property name="Name">txtCity</Property> 
    <Property name="Text">England</Property> 
    </Object> 
    <Object type="System.Windows.Forms.Label"> 
    <Property name="Name">lblNRIC</Property> 
    <Property name="Text">NRIC</Property> 
    </Object> 
    <Object type="System.Windows.Forms.TextBox"> 
    <Property name="Name">txtNRIC</Property> 
    <Property name="Text">ABC</Property> 
    </Object> 
    <Object type="System.Windows.Forms.RadioButton">  
    <Property name="Name">RadioButton1</Property>  
    <Property name="Text">OptionA</Property>  
    </Object> 
    <Object type="System.Windows.Forms.CheckBox"> 
    <Property name="Name">CheckBox1</Property> 
    <Property name="Text">Yes</Property> 
    </Object> 
    <Object type="System.Windows.Forms.CheckBox"> 
    <Property name="Name">CheckBox2</Property> 
    <Property name="Text">No</Property> 
    </Object> 
    <SampleDataSet> 
    <SampleTable> 
     <TableName>Sample1</TableName> 
     <ProductName>ABC</ProductName> 
     <Price>100</Price> 
     <Qty>10</Qty> 
     <Amount>1000</Amount> 
    </SampleTable> 
    <SampleTable> 
     <TableName>Sample2</TableName> 
     <ProductName>DEF</ProductName> 
     <Price>200</Price> 
     <Qty>20</Qty> 
     <Amount>4000</Amount> 
    </SampleTable> 
    <SampleTable> 
     <TableName>Sample3</TableName> 
     <ProductName>GHK</ProductName> 
     <Price>300</Price> 
     <Qty>30</Qty> 
     <Amount>9000</Amount> 
    </SampleTable> 
    </SampleDataSet> 
    </Object> 

ウィンドウ部分のようなWebフォームを作成すべきではありませんが、本当に必要です。 どうすれば問題を解決できますか?xml serilizationを使用できますか? いくつか例を挙げて私に正しい方法を教えてください。

よろしく

ハン

答えて

5

あなたはXHTMLにこのXMLを変換するためにXSLTを使用することができます。また、MVC ActionResultクラスから独自のXMLBasedFormResultを継承し、C#(LinqToXMLなど)を使用してExecuteResultメソッドでフォームHTMLを生成することもできます。

+0

+1、非常に良いアプローチ。 –

+0

あなたは私にいくつかの例を教えてください。本当にありがとうございます。私はそれを試してみたいです。 –

0

さて、あなたは本当にビジュアルスタジオの複製を終わらせてしまうと思いませんか?

私はWPFのようなものを使用することをお勧めします。これはブラウザとWindowsアプリケーションに表示されます。私はxmlを解析し、UIを生成するこのアイデアを経験から伝えています。これはjsp/aspエンジンの作成に似ています。

はまた、私はあなたが持っているXMLを使用すると、テキストボックス、ドロップダウンリスト、メニューなどを投入する予定がどうすればよいのスクリーン、色、スタイル、フォントなどの一切の書式情報、場所..

が持っていないことに気づきました。.. ?

+0

真実を伝えるために、webの全部分がasp.netで開発されています。mvc.mineはthis.soの1つの形式ですが、wpfに変更することはできません。ご回答有難うございます。 –

+0

Hmm ..あなたはまだそれらのlables、書式設定されたテキストボックス、テーブル、divなどのレイアウトの詳細が必要です。また、それも..あなたはまた、htmlコントロールにWindowsコントロールをマップする必要がありますいくつかの高度なウィンドウコントロールはhtmlページでモデル化するのが難しいかもしれません... Windowsプラットフォームに特化していないメタモデルを持つ方が理にかなっています。実際には、WindowsフォームコントロールをベースにしたメタモデルからWebを作成することから、htmlページからWindowsフォームUIを作成する方が簡単かもしれないと思う:D – Mahesh

+0

はい、このcase.iについても混乱する私はデータだけを表示することができればいいです、ドロップダウンリスト、メニュー、ボタンなどのいくつかのコントロールを作成する必要はありません.Webパーツはviewing.iのためだけですので解決方法はありません:(お問い合わせ –

0

メイス氏によると、XSLTは良い解決策です。

これは、XLSスタイルシートです:あなたはXLSの基本的なスキルを取得するには、このTutorialを読むことができます

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<!-- Template for <Object type="System.Windows.Forms.Form --> 
<xsl:template match="*[@type = 'System.Windows.Forms.Form']"> 
    <!-- Here's the html's form tag --> 
    <form> 
     <fieldset> 
      <xsl:apply-templates /> 
     </fieldset> 
    </form> 
</xsl:template> 

<!-- Template for <Object type="System.Windows.Forms.Label --> 
<xsl:template match="*[@type = 'System.Windows.Forms.Label']"> 
    <!-- Here's the html's label tag --> 
    <label><xsl:value-of select="." /></label> 
</xsl:template> 

<!-- Template for <Object type="System.Windows.Forms.TextBox --> 
<xsl:template match="*[@type = 'System.Windows.Forms.TextBox']"> 
    <!-- Create the html's input tag --> 
    <xsl:element name="input"> 
     <!-- And set the attributes --> 
     <xsl:attribute name="name"> 
      <xsl:value-of select="./Property[@name ='Name']" /> 
     </xsl:attribute> 
     <xsl:attribute name="type">text</xsl:attribute> 
     <xsl:attribute name="value"> 
      <xsl:value-of select="./Property[@name ='Text']" /> 
     </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

<!-- Add here templates for RadioButton, Checkbox ... --> 

</xsl:stylesheet> 

あなたは、C#で今、このXSL変換を実行することができます。

//load the Xml doc 
XPathDocument myXPathDoc = new XPathDocument(sXmlPath) ; 

XslTransform myXslTrans = new XslTransform() ; 

//load the Xsl 
myXslTrans.Load(sXslPath) ; 

//create the output stream 
XmlTextWriter myWriter = new XmlTextWriter 
       ("result.html", null); 

//do the actual transform of Xml 
myXslTrans.Transform(myXPathDoc,null, myWriter);   

myWriter.Close() ; 

あなたのシナリオのためにそれを変更する必要があります。 XslTransformクラスなどの情報については、MSDNをご覧ください。

関連する問題