Я использую шаблон MVP в своем приложении.
Но я получаю исключение NullReferenceException на Page_Load моего класса просмотра.
Вот мой класс ведущего:
using Microsoft.Practices.CompositeWeb;
namespace PresenterDLL
{
public class NamePresenter : Presenter<IProduct>
{
public void SayHello()
{
View.Name = 200;
}
}
public interface IProduct
{
int Name { get; set; }
}
}
и вот код моего класса:
с использованием системы;
используя PresenterDLL;
использование Microsoft.Practices.ObjectBuilder;
открытый частичный класс _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();
}
}
}
при запуске приложения я получаю исключение NullreferenceException в методе Page_Load,
как _presenter имеет значение null. Потому что это никогда не называется. Итак, что я должен сделать, чтобы ObjectBuilder мог вызвать его до начала жизненного цикла страницы ..
Мой базовый класс страницы:
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);
}
}
Может кто-нибудь, пожалуйста, выяснить, в чем проблема ...