ASP.NET中的MVC模式应用

原创 2004年04月05日 23:47:00

ASP.NET中的MVC模式应用

引言:
当我在Web开发的过程中经历的很长时间后,我仍然没有找到一些很好的代码能够说明ASP.NET下的
MVC模式开发。我列举了一个简单的例子,它给出了一个很好的关于使用MVC的方法或过程。
关于MVC
在传统的应用程序里,一块单一的代码处理了所有的事情。但是用MVC,你可以将你的程序分成3格
相互间合作的部分:Model、View和Controller(对于一个特有的名字,个人认为不必要进行完全的
翻译,这样效果会更好)。View是用户可以看到的部分,它将数据进行格式化并且呈现在用户眼前。
然而,实际上,它并不包含数据。数据是属于Model。最后Controller处理用户提交的命令并且修
改Model。想知道关于MVC个功能多的内容请打开下面的链接:
http://www.uidesign.net/1999/papers/webmvc_part1.html

Model:
也许你对MVC很了解,但是我仍给出了一个简单的代码,它显示如何执行了在ASP.NET中MVC的设计。
Model是你将进行所有的业务逻辑处理的部分。下面的类是仅仅增加了两个数字并且把结果送回。
<---------------------------------------------------------------------------------->
using System;

namespace MVCTest
{
    /// This class is where we have the business logic build in.
    /// It is a managed library that will be referenced by
    /// your web application
   
    public class Model
    {
     public Model()
    {   
    }
       
    // static method for adding two numbers
    //
    // @params int a,b - numbers to be added
    // @return c - result
    public static int Add(int a, int b)
    {
        int c = a + b;
        return c;
    }

    // static nethod to add two numbers
    //
    // @params string a,b - numbers to be added
    // @return int c - result
    public static int Add(string a, string b)
    {
        int c = Int32.Parse(a) + Int32.Parse(b);
        return c;
    }
    }
}
<---------------------------------------------------------------------------------->
Controller:
在ASP.Ner中,你通常会直接访问服务端。代替服务端是一个潜在的Controller,它是主要的进入口。
这将不提供的是一个中控中心,如果你首先想要使用服务端,或者任何的公共处理过程将会再发生
在所有的服务端。然而,你所有的code-behind的页面都继承子一个公共的类那就是
System.Web.UI.Page,你可以把所有的初始化的代码都放在OnLoad()的事件中,这是重载自每当页面
在任何时候被读取的时候都会被框架进行调用的页面类的OnLoad()。
现在,在你的代码的任何地方,你都可以重新定位并连接到一个新的aspx页面。你可以通过调用
getServicePage()的方法来获得将要跳转的页面的名字。
如果你想要重命名一个aspx页面文件,你就可以马上修改该文件的名字,并且改变getServicePage那你
的站点就仍然可以工作

视图
这部分是我们所有的aspx页面并且和它所需要的对aspx进行支持的code-behind类。这下面的例子中,我
写了2个aspx页面,一个用来得到用户的输入进而可以计算书2个数字的和,而另一个则输出结果。
这是View1.aspx页面的:
<%@ Page language="c#" Codebehind="View1.aspx.cs"
  AutoEventWireup="false" Inherits="MVCApplication.View1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
  <head>
    <title>View1</title>       
  </head>
  <body MS_POSITIONING="GridLayout">
    <h3>ADDITION</h3>
      <form runat="server" ID="Form" method="post">
    <table>
      <tr valign="middle">
        <td class="field">First Number</td>
        <td>
          <asp:textbox id="one" runat="server" columns="32" maxlength="32" />
        </td>
      </tr>
      <tr valign="middle">
        <td class="field">Second Number</td>
        <td>
          <asp:textbox id="two" runat="server" columns="16" maxlength="16" />
        </td>
      </tr>
      <tr>
        <td colspan="2" align="center">
          <asp:button id="btnSubmit" runat="server"
                 text="Add" onClick="Submit" cssclass="button" />
        </td>
      </tr>
    </table>
      </form>
  </body>
</html>
这是View1.aspx.cs的code-behind类:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using MVCTest;

namespace MVCApplication
{
    /// This is our View in the MVC model.
    /// This class is a sub class of Controller.
    /// This class gets the input from the View1.aspx
    /// page, calls the add method in
    /// Model class and sends to the next aspx page.
    public class View1 : Controller
    {

    /// The next screen to send on the case of success.
    /// Id of the screen as is in the Controller
    private int Next_Screen = 2;

    /// The screen to send on the case of failure/error.
    /// Id of the screen as is in the Controller
    private int Failure_Screen= 3;

    protected TextBox one;
    protected TextBox two;

    protected HtmlForm Form;
    protected Button btnSubmit;

    public View1()
    {
        ServiceId = 1;
    }

    /// Get the number to be added from the user, perform the operation
    /// and send the result.
    protected void Submit(object sender, System.EventArgs e)
    {           
        if(Page.IsValid)
        {
                   string first = one.Text;
        string second = two.Text;

                   int sum = Model.Add(first, second);
           
        //Get the page name from the Controller
        string page_path = GetServicePage(Next_Screen);
        Server.Transfer(page_path+".aspx?sum="+ sum.ToString());

            }else {
        //On failure direct to this screen
        Server.Transfer(GetServicePage(Failure_Screen));
            }
    }

    private void Page_Load(object sender, System.EventArgs e)
    {
    }       
    }
}
下面是View2.aspx页面:
此页通过一个请求参数得到结果并且显示它。
<%@ Page language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.SessionState" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="System.Web.UI.HtmlControls" %>
<script language="C#" runat="server">
    void Page_Load(Object sender, EventArgs e)
    {
    Label1.Text = Request.Params.Get("sum");           
    }
</script>
<html>
  <head>
    <title>View2</title>       
  </head>
  <body MS_POSITIONING="GridLayout">
    <h3>SUM</h3>
      <asp:Label id="Label1" Runat="server"></asp:Label>
      <form id="View2" method="post" runat="server">
      </form>
  </body>
</html>

MVC模式应用

  开发程序的时候,每个人都有自己的一套办法,走哪一条路都可以到罗马,但是在通往罗马的路上,有几条是大家供认的好走又省力气的,面对一个大的项目,纷繁复杂的功能,走一清晰的路是必要的,对程序员而言,mv...
  • qinzhihu
  • qinzhihu
  • 2008年02月18日 17:43
  • 2026

MVC模式在Java Web中的应用

流行的Java Web应用框架基本上都实现了MVC模型,下面分别以JSF和Struts为例介绍这些框架是如何实现MVC模型的。JSF在JSP框架中提供了一个中心控制器FacesServlet完成所有的...
  • JavaEETeacher
  • JavaEETeacher
  • 2007年04月21日 22:06
  • 3011

说说 mvc 模式的原理,它在 android 中的运用。

说说 mvc 模式的原理,它在 android 中的运用。
  • xiaopihair123
  • xiaopihair123
  • 2016年11月13日 17:05
  • 1757

NLog 在Asp.NET MVC5中使用文件和数据库设置

NLog 在Asp.NET MVC5中使用文件和数据库设置
  • pipi0714
  • pipi0714
  • 2015年08月29日 20:00
  • 1804

MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用

摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识。 第二阶段11~20篇将会侧重于专题的讲解,一篇文章解决一个实际问题。 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解...
  • jelenyoung
  • jelenyoung
  • 2015年09月14日 13:08
  • 3597

swing之mvc模式

1 Swing与MVC   Swing组件设计使用了著名的MVC模型-视图-控制器体系结构。为了了解MVC体系结构与Swing组件的关系,我们来看一下如何设计一个表示按钮的组件,因为按钮的各个部...
  • hanruikai
  • hanruikai
  • 2012年04月10日 19:43
  • 7008

MVC模式中应用表达式语言完成属性传递

表达式语言的强大之处在于可以保存在属性范围中的
  • shiyeqiangldh
  • shiyeqiangldh
  • 2014年05月28日 18:27
  • 495

web项目中的mvc模式理解

MVC的理解概念: MVC是一种软件工程中的一种软件架构模式,把软件系统划分为三个基本结构部分,分别是模型(model)、试图(view)、控制器(controller),简称为MVC; MVC是...
  • sinat_28789467
  • sinat_28789467
  • 2017年05月30日 09:10
  • 442

Asp.net mvc与spring.net整合

基本结构: 第一步准备实体类: [Serializable]    public class Person    {        ///         /// 编号        ///     ...
  • xueshanzhisheng
  • xueshanzhisheng
  • 2009年10月16日 14:53
  • 2595

MVC模式在ASP.NET中的应用

   zlyperson(翻译) 关键字 MVC 模式 asp.net 出处 http://www.codeproject.com/useritems/mvcasp.asp MVCApplicatio...
  • softmse
  • softmse
  • 2005年02月04日 15:17
  • 703
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET中的MVC模式应用
举报原因:
原因补充:

(最多只允许输入30个字)