Click here to Skip to main content
15,309,768 members
Articles / Programming Languages / C#
Posted 22 Jan 2009

Tagged as


42 bookmarked

Easy Example for Model View Presenter in ASP.NET - C#

Rate me:
Please Sign up or sign in to vote.
4.47/5 (38 votes)
22 Jan 2009CPOL2 min read
It is a simple example for the implemention of Model View Presenter in Asp.Net

Model View Presenter

Model View Presenter is a software approach pattern conceived as derivative of Model View Controller.

What is Model?

Model is a domain level or business level object. A model accomodates application data and provides behaviours to systematically access it. It should be independent, it should not have any association with user interface issues. So we can reuse the same model for different type of UI level applications.

What is View?

A View is a windowpane for showing the model data or elements to the application users. Model does not have direct link to the views. View know about thier Models, but not the other way around.

What is Presenter?

Presenter will address the user input and use this to manipulate the model data. View will pass the user input actions to the Presenter for interpretation. Presenter will act on the received data from View and communicate with Model and produce results to the View.

Here is the classic example for implementing and understanding Model View Presenter pattern in an ASP.Net application. I believed this will helps you to get a good start in Model View Presenter.

Step 1: Create an interface for a business object (Model). For example:

public interface ICircleModel
    double getArea(double radius);

Step 2: Create a class for Model

public class CModel: ICircleModel
    public CModel(){}
    public double getArea(double radius)
        return Math.PI * radius * radius;

Step 3: Create an interface for View

public interface IView
    string RadiusText { get; set;}
    string ResultText { get; set;}

Step 4: Create UI like below with a Label, TextBox and Button. Textbox for getting radius of the circle, Label is for displaying the area and Button is for calculating the Area

<html xmlns="<a href="%22"></a>">
<head runat="server">
<title>MVP-Easy Example for ASP.Net C#</title>
<form id="form1" runat="server">
<th colspan="2">Calculate Area of Circle</th>
<td>Enter Radius</td>
<td><asp:TextBox ID="TextRadius" runat="server"></asp:TextBox></td>
<td><asp:Label ID="LabelResult" runat="server" ForeColor="red"></asp:Label></td>
<tr align="right">
<td colspan="2"><asp:Button ID="ButtonResult" runat="server" Text="Get Area?" OnClick="ButtonResult_Click" /></td>

Step 5: Create a Presenter class for collecting user inputs from View and pass view details to the Model.

public class CPresenter
    IView mview;
    public CPresenter(IView view)
        mview = view;
    public double CalculateCircleArea()
        CModel model = new CModel();
        mview.ResultText = model.getArea(double.Parse(mview.RadiusText)).ToString();
        return mview.ResultText.ToString();

Step 6: Code-behind of ASPX page - View is communicating to the Model via Presenter

public partial class _Default : System.Web.UI.Page,IView 
    protected void Page_Load(object sender, EventArgs e)
    protected void ButtonResult_Click(object sender, EventArgs e)
        CPresenter presenter = new CPresenter(this);
    public string RadiusText
        get{return TextRadius.Text;}
        set{TextRadius.Text = value;}
    public string ResultText
        get { return LabelResult.Text; }
        set { LabelResult.Text = value; }

Now, I am sure, you are also feeling the same, it is pretty simple :)

Happy MVP Coding!!!


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

RB Changanacherry
Team Leader
India India
I am Rajesh Babu, currently working for Nous Infosystems, Bangalore. I have 6 plus years experience in Microsoft Technologies.

Comments and Discussions

GeneralMy vote of 5 Pin
Ashish Jain(Be Jovial)17-Aug-15 21:28
MemberAshish Jain(Be Jovial)17-Aug-15 21:28 
GeneralThanks Pin
Kareem_Marey27-May-15 22:03
professionalKareem_Marey27-May-15 22:03 
GeneralMy vote of 1 Pin
Alvin George27-Oct-14 19:49
MemberAlvin George27-Oct-14 19:49 
QuestionCModel model = new CModel(); Pin
SayedAliTech22-Oct-14 3:27
MemberSayedAliTech22-Oct-14 3:27 
GeneralVery nice! Pin
rkrockr11-Jun-14 18:12
Memberrkrockr11-Jun-14 18:12 
Questionsimple any easy to understand Pin
siva02047-May-14 1:16
Membersiva02047-May-14 1:16 
GeneralExcellent and easiest explaination..... Pin
Rajneesh Rai8-Apr-14 1:53
MemberRajneesh Rai8-Apr-14 1:53 
QuestionExcellent example... Pin
Member 107307057-Apr-14 4:32
MemberMember 107307057-Apr-14 4:32 
QuestionAbout MVP Pin
Member 980931029-Sep-13 22:51
MemberMember 980931029-Sep-13 22:51 
GeneralMy vote of 5 Pin
manojmanirajan3-Jul-13 10:29
Membermanojmanirajan3-Jul-13 10:29 
GeneralMy vote of 5 Pin
Mohamed hammad8-Feb-13 11:56
MemberMohamed hammad8-Feb-13 11:56 
Questionnice Pin
kedarkeskar20-Aug-12 3:25
Memberkedarkeskar20-Aug-12 3:25 
GeneralSimple and straight to the point Pin
kchannav9-May-12 19:37
Memberkchannav9-May-12 19:37 
QuestionGood example but... Pin
bthompz22-Feb-12 13:43
Memberbthompz22-Feb-12 13:43 
BugVery helpful Pin
Member 825899919-Oct-11 8:18
MemberMember 825899919-Oct-11 8:18 
GeneralMy vote of 5 Pin
rj4530-Sep-11 7:07
Memberrj4530-Sep-11 7:07 
No extra fluffly formatting. Gets right to the meat.
GeneralMy vote of 5 Pin
sudhir kumar 223-Feb-11 22:10
Membersudhir kumar 223-Feb-11 22:10 
GeneralMy vote of 5 Pin
David McGhee9-Nov-10 6:16
MemberDavid McGhee9-Nov-10 6:16 
Generalgood intro Pin
Donsw22-Feb-09 6:40
MemberDonsw22-Feb-09 6:40 
GeneralA very basic description of a MVP Passive View Pin
Ray Parker22-Jan-09 23:05
MemberRay Parker22-Jan-09 23:05 
GeneralRe: A very basic description of a MVP Passive View Pin
Donsw9-Feb-09 2:36
MemberDonsw9-Feb-09 2:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.