2011-08-25 6 views
1

私はCRUD関数を持つアプリケーションを、リポジトリパターンを持つXML文書に作成しました。 リポジトリクラスごとに4つのモデル(4つのxmlファイル)があります。 コンストラクタ内のXDocumentオブジェクトに読み込まれたのは、たった4つのxmlドキュメントでした。MVC3基本的なC#プログラミングの質問 - 動的なCRUD XMLアプリ - 問題

itemData = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Items/item1.xml")); 

今私は、xmlファイルを動的にしたいと思いますので、それは無制限XMLS

ので、いただきました!最良の方法

を読むことができますか? 2番目のコンストラクタを作成し、urlからパラメータを渡しますか?このようなもの:

 public ItemRepository() 
      { 
      } 

      public ItemRepository(string xml) 
      { 
      itemData = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Items/" + xml + ".xml")); 
       .... 
      } 

他にも何か提案がありますか?私はこれでモデルでNullReferenceExceptionを取得します。

+0

Uh。 Btw。このアプリは、このガイドからかなりの部分が削除されています。http://www.gregjopa.com/2011/04/crud-operations-with-xml-data-in-asp-net-mvc-3/ –

+0

命名規則?たとえば、エンティティごと、ユーザーごとに別々のxmlファイルを作成していますか? –

答えて

0

最も簡単な回避策は、すべてのCRUDメソッドにコンストラクタからちょうど出たコードです。ここにもう少し情報のためのリンク(そしてもっと多くの問題:P)NullReferenceException while using XElement

1

リポジトリがxmlファイルを取得するために完全なパスを直接受け入れることができるという点を除いて、私はあなたのアプローチには何の悪いこともありません。それはそれを書いているちょっと洗練された方法でしょう。

あなたのNullReferenceExceptionでは、完全なデバッグだけが役立つかもしれません。あなたの最初の声明が働いていたなら、なぜあなたがここに書いたコードのビットから、次のものがどうしてべきでないのか分かりません。

あなたに幸運、

+0

2番目のコンストラクタを完全に無視するため、NullReferenceExceptionが発生するため、モデルに何もバインドされません。 –

+0

うれしいです。これにもっと問題がある場合は、新しい質問を投稿する必要があります。 – Arthis

+0

私は回避策をとった。コンストラクタのコードをすべてのCRUDメソッドに入れました。 http://stackoverflow.com/questions/7244014/nullreferenceexception-while-using-xelement –