Je suis en train de mettre en œuvre un modèle MVP dans mon application. Mais je reçois NullReferenceException sur le Load Load de ma classe d'affichage. Voici ma classe de présentateur:NullReferenceException lorsque vous utilisez ObjectBuilder pour implémenter le modèle MVP
using Microsoft.Practices.CompositeWeb;
namespace PresenterDLL
{
public class NamePresenter : Presenter<IProduct>
{
public void SayHello()
{
View.Name = 200;
}
}
public interface IProduct
{
int Name { get; set; }
}
}
et voici le code derrière la classe de mon point de vue:
using System; en utilisant PresenterDLL; en utilisant Microsoft.Practices.ObjectBuilder; Public partielle classe _Default: BasePage, IProduct { private NamePresenter _presenter;
[CreateNew]
public NamePresenter Presenter
{
set
{
this._presenter = value;
_presenter.View = this;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this._presenter.OnViewInitialized();
this._presenter.SayHello();
}
this._presenter.OnViewLoaded();
}
public int Name
{
get
{
return 10;
}
set
{
TextBox1.Text = value.ToString();
}
}
}
lors de l'exécution de l'application que je reçois NullReferenceException dans la méthode Page_Load, comme _presenter est nulle. Parce que ça n'a jamais été appelé. Alors, que dois-je faire pour que ObjectBuilder peut l'appeler avant que le cycle de vie de la page commence ..
Ma classe de page de base est:
public class BasePage : Microsoft.Practices.CompositeWeb.Web.UI.Page
{
public BasePage()
: base()
{
// _ctlForm = this;
// WebClientApplication.BuildItemWithCurrentContext(this);
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//Disable all caching
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
}
protected override void OnPreInit(EventArgs e)
{
//This has been moved to the top since the preinit in the base clase is responsible
//for dependency injections.
//ObjectFactory.BuildUp(this);
base.OnPreInit(e);
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
}
}
Quelqu'un peut-il s'il vous plaît savoir où est le problème ...
remplacer _Default: System.Web.UI.Page à _default: PageBase (je ne me rappelle pas le nom de la page de base, mais utilise une page de base from framework) – garik