XSDを入力フォーム(ASP.NET C#)に変換して、後で新しいフィールドがXSDに追加/削除されるたびに、ページ上のフィールドがそれぞれ自動的に表示または非表示になるようにする標準的な方法はありますか?これは何か社内で開発する必要があるのはどれですか?フォームをシリアル化/逆シリアル化して生成する方法が必要だと思いますか?どんなヘルでもいただければ幸いです。
3 に答える
これを完全に自動化するために組み込まれているものはないと思います。ただし、かなり近づくことができます。Visual Studio には、xsd ドキュメントからクラス定義を自動的に作成するために使用できる xsd.exe というコマンド ライン プログラムが含まれています。そのクラス定義を取得したら、ObjectDataSource コンポーネントと DetailsView コントロールを介してフォームに接続できます。
前提:現時点ではXMLの方が簡単なので、XMLを使用しています。
アイデア:データを操作するためのフォームを作成したいので、XMLではなくSQLを使用できるのではないかと思います。これは当てはまらないかもしれませんが、XML / XSDバックエンドの代わりにデータベースバックエンドを使用している場合は、おそらくより多くのツールが役立つでしょう。(さらに、データをあるものから別のものに変換する方法があります)。
ASP.NETのデータベースからフォームを作成するツールがあります。たとえば、SubSonicには、スキーマのみを知っているデータベースマネージャーを作成できる自動スキャフォールディングモジュールがあります。スキーマが変更された場合は、SubSonicにファイルを再生成させるだけで、フォームが変更されます。完璧ではありませんが、ニーズによっては大いに役立つ場合があります。
オプション1)XSDからデータベーススキーマを作成し(XSDファイルからデータベーステーブルを作成するにはどうすればよいですか?)、その時点からSubSonicを使用できます。これはあなたの最初の質問よりもさらに苦痛かもしれません...あなただけが知っています。
オプション2)SubSonicスキャフォールディングをハックして、データベースではなく基盤となるXSD/XMLをサポートするようにします。XSDからフォームを生成するために、おそらく多くのインフラストラクチャ(SubSonicはオープンソース)を再利用できます。
幸運を!
ObjectDataSource は悪い考えではないと言わざるを得ませんが、ネストされた要素がある場合、これは機能しません。これに加えて、ネストされた要素の場合、DetailsView にもすべての「..FieldSpecified」ブール型フィールドがあります。
私はまだ、XSD ファイルを使用して ASP.NET フォームを生成する方法を見つけようとしていますが、すべてを入力する必要はありません。
すでにその問題に遭遇した人はいますか?
PS: 別のアプローチとして InfoPath を使用することもできますが、これには Web フォームとして実行するライセンス ソフトウェアが必要です...