Спасибо за чтение.
У меня есть пользовательский элемент управления comments.ascx.На этой странице у меня есть следующие методы:
protected override void OnInit(EventArgs e)
{
_presenter = new CommentsPresenter();
_presenter.Init(this, IsPostBack);
}
public Comments()
{
WebContext = ObjectFactory.GetInstance<IWebContext>();
}
protected void Page_Load(object sender, EventArgs e)
{
if (commentPosted.Controls.Count > 0)
commentPosted.Controls.Clear();
_presenter.LoadComments();
}
protected void BtnAddCommentClick(object sender, EventArgs e)
{
_presenter.AddComment(commentMark.Text);
commentMark.Text = "";
}
И вот кишки класса CommentsPresenter:
private IComments _view;
private readonly ICommentRepository _commentRepository;
private readonly IWebContext _webContext;
public CommentsPresenter()
{
_commentRepository = ObjectFactory.GetInstance<ICommentRepository>();
_webContext = ObjectFactory.GetInstance<IWebContext>();
}
public void Init(IComments view, bool isPostBack)
{
_view = view;
_view.ShowCommentBox(_webContext.CurrentUser != null);
}
public void LoadComments()
{
_view.LoadComments(_commentRepository.GetCommentsBySystemObject(_view.SystemObjectId,
_view.SystemObjectRecordId));
}
public void AddComment(string comment)
{
if (_webContext != null)
{
var c = new Comment
{
Body = comment,
CommentByAccountId = _webContext.CurrentUser.AccountId,
CommentByUserName = _webContext.CurrentUser.UserName,
CreateDate = DateTime.Now,
SystemObjectId = _view.SystemObjectId,
SystemObjectRecordId = _view.SystemObjectRecordId
};
_commentRepository.SaveComment(c);
}
_view.ClearComments();
LoadComments();
}
У меня также есть страница Updates.aspx (которая ссылается наКомментарии пользовательского контроля).На этой странице у меня есть следующее:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (_webContext.AccountId > 0)
_presenter.Init(this, _webContext.AccountId);
else if (_userSession.CurrentUser != null)
_presenter.Init(this, _userSession.CurrentUser.AccountId);
}
}
protected void BtnAddStatusClick(object sender, EventArgs e)
{
var id = default(int);
if (_webContext.AccountId > 0)
id = _webContext.AccountId;
else if (_userSession.CurrentUser != null)
id = _userSession.CurrentUser.AccountId;
var su = new StatusUpdate
{
CreateDate = DateTime.Now,
AccountId = id,
Status = updateText.Text
};
_statusRepository.SaveStatusUpdate(su);
_alertService.AddStatusUpdateAlert(su);
_presenter.Init(this, id);
}
Проблема, с которой я сталкиваюсь заключается в том, что когда я добавляю if (! IsPostBack) к вышеупомянутому событию Page_Loadи обновите мой статус, тогда все комментарии на странице будут очищены.Но когда я удаляю if (! IsPostBack) , комментарии обновляются, когда я обновляю свой статус, но кнопка отправки в моем пользовательском элементе управления Comments не срабатывает!
Я не динамическидобавив свой пользовательский элемент управления, поэтому я не думаю, что это проблема приоритета.Я не могу понять это.Любая идея, что происходит?
Спасибо за вашу помощь / предложения / советы ...