- I like to keep views decoupled or unaware of the presenters, hence Views communicate to the presenter by raising events. This eliminates the need for the view to have a reference to the presenter. Keep Views thin and dumb.
- The presenter on the other hand has a member reference to the view (and the model) usually. Hence it can talk to the view by making method calls via an interface (permits views to be substituted as long as they conform to the IView interface). e.g. In your case, Set_X_Option(eOptionEnum) would be a member of the IView Interface, which the presenter can then invoke appropriately.
Refer from http://stackoverflow.com/questions/246028/mvp-events-or-property
public interface ICurrentTimeView { DateTime CurrentTime { set; } } public class CurrentTimePresenter { public CurrentTimePresenter(ICurrentTimeView view) { if (view == null) throw new ArgumentNullException("view may not be null"); this.view = view; } public void InitView() { view.CurrentTime = DateTime.Now; } private ICurrentTimeView view; } public partial class ShowMeTheTime : Page, ICurrentTimeView { protected void Page_Load(object sender, EventArgs e) { CurrentTimePresenter presenter = new CurrentTimePresenter(this); presenter.InitView(); } public DateTime CurrentTime { set { lblCurrentTime.Text = value.ToString(); } } }
<asp:Label id="lblCurrentTime" runat="server" /