0

これが私の苦境です。私はカスタムの1回限りのコンテンツ管理システムを作成していますが、このメソッドを正しく機能させることはできません。私がやりたいのは、別々のフォルダーにメソッドの価値のある洗濯物リストを作成し、それらを呼び出したいWebフォームで必要に応じてそれらを呼び出すことです。

WebAppを作成し、App_Codeという名前のアプリ内にフォルダーを作成しました。App_Code内には、「TestimonialService」というパブリッククラスがあります。ここにあります:

/******************** TESTIMONIAL SERVICE ****************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BlueTreeSecurity.App_Code.Data;

namespace BlueTreeSecurity.App_Code.Testimonials
{
public class TestimonialService
{
    private readonly CMSObjectContext _context;
    public TestimonialService(CMSObjectContext context)
    {
        this._context = context;
    }

    #region methods

    /// <summary>
    /// Gets all testimonials
    /// </summary>
    /// <returns>testimonial collection</returns>
    public List<Testimonial> GetAllTestimonials()
    {
        var query = from t in _context.Testimonials
                    orderby t.DisplayOrder ascending
                    select t;
        if (query.Count() > 0)
        {
            var testimonial = query.ToList();
            return testimonial;
        }
        else
        {
            return null;
        }
    }


    #endregion
    }
}

次に、実際のaspx.csページで、次のように関数を呼び出します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BlueTreeSecurity.App_Code;
using BlueTreeSecurity.App_Code.Data;
using BlueTreeSecurity.App_Code.Testimonials;

namespace BlueTreeSecurity
{
    public partial class Testimonials : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Page.Title = "Testimonials | ...";

            Bind_Data();
    }

    protected void Bind_Data()
    {
        /** when i try to use intellisense here it's not recognized. **/

        var testimonials = TestimonialService.GetAllTestimonials();

        rptTestimonials.DataSource = testimonials;
        rptTestimonials.DataBind();
    }
}

}

正確なエラースパットバックは次のとおりです。

Error   1   
An object reference is required for the non-static field, method, or property
'BlueTreeSecurity.App_Code.Testimonials.TestimonialService.GetAllTestimonials()'

何でもありがたいです、みんな。ここで髪を引き裂いています。

これがプロジェクトの構造です

- Blue Tree Security (main project)
   - App_Code
      +  Data
      +  Testimonials
         + TestimonialService.cs
   Rest of the .aspx, .aspx.cs, and .ascx files.
4

1 に答える 1

2

ここで完全に誤解していない場合、表示されるエラーメッセージは、問題が何であるかを示しています。GetAllTestimonials()を静的にするか、TestimonialServiceインスタンスをインスタンス化します。

protected void Bind_Data()
{
    var testimonialService = new TestimonialService(yourContextObect);

    var testimonials = testimonialService.GetAllTestimonials();

    rptTestimonials.DataSource = testimonials;
    rptTestimonials.DataBind();
}
于 2012-04-25T10:59:46.637 に答える