C#とSharepoint Programmingの新機能です。同じ名前空間内の異なるクラスからVisual WebPart(.cs)内のC#メソッドを呼び出す方法
私はWebPartとそれに使用されているC#について学びたいと思っています。私はリストに項目を追加/削除する視覚的なwebpartを作った。私はリスト内の項目を追加するボタンのクリックで呼び出されるメソッドを持っています。ここで
は私の方法である:これは正常に動作します
protected void Button1_Click(object sender, EventArgs e)
{
TestMethod();
}
:
public void TestMethod()
{
using (SPSite oSPSite = SPContext.Current.Site)
{
using (SPWeb ospweb = oSPSite.OpenWeb())
{
SPList lst = ospweb.Lists["CusomList1"];
SPListItem item = lst.Items.Add();
item["Item1"] = txt1.Text;
item["Item2"] = txt3.Text;
item["Item3"] = Convert.ToInt32(txt3.Text);
item["Item4"] = txt4.Text;
item.Update();
}
}
}
これは次のように呼ばれています。私は同じことを行う2番目のWebPartで同じメソッドを使用しようとしています(アイテムを追加する)。
しかし、私は同じプロジェクトで新しいVisual Webパーツを追加しました。これは、ボタンを追加
protected void Button1_Click(object sender, EventArgs e)
{
VWP1 NewClass = new VWP1();
NewClass.TestMethod();
}
として、クラスやメソッドを呼び出したときに動作しないと私はデバッグを行うとき、私は次のメッセージを得る:
をObject reference not set to an instance of an object.
誰かが私に何をすべきか教えてください。
Windows SharePoint Servicesオブジェクトを使用してMicrosoft .NET Frameworkのメモリ内のオブジェクトを保持しないようにするには、「使用」ステートメントが多少重要であるとお読みください。それは正しいのですか? –
@AndresAdhiあなたが作成する 'SPSite' /' SPWeb'オブジェクトを処分することは非常に重要です。作成していないサイト/ Webオブジェクトを廃棄しない*処理しないことも同様に重要です。すべてを "使用する"だけで問題が発生します。それがいつそして適切でないかを知る必要があります。現在のコンテキストを処分してはいけません。 – Servy
あなたの理解を深めるために、私はhttp://solutionizing.net/2008/12/06/the-new-definitive-spsitespweb-disposal-article/処分に関するアドバイスの良いアドバイス+1をお勧めします!また、オブジェクトの廃棄に関する心配があった場合http://archive.msdn.microsoft.com/SPDisposeCheck – Truezplaya