`

应用ASP.NET MVC的系统软件架构-知识普及篇1

阅读更多

 

应用MVC的系统软件架构

 

          -----基础知识

 

引言

 

 

M-V-C(Model View Controller)

 

 

 

/Files/virusswb/应用MVC的系统软件架构.doc

 

   从上图可以看出是首先通过view的请求,经过url导航到一个controller中,最终定位到一个action,在action中访问具体的model,获取数据之后,将数据放入ViewData或者是TempData中,然后通过action呈现到指定的view上。在view上可以定制显示的格式。

1 知识点

 

1.1 ViewData和TempData的区别 

 

   ViewData只能在本Action内有效,在本Action中可以保存数据。

   TempData可以在Action跳转中使用,TempData的数据在服务器的Session中保存,但是只保留一个来回。也就是第一次跳转过去的时候还可以访问,后面就没有了。范围限制在同一个Controller中的不同Action传递数据。

 

代码
<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> -->public class HomeController : Controller
    {
        
public ActionResult Index2()
        {

            ViewData[
"ViewData"= "我是VeiwData中的数据";
            TempData[
"TempData"= "我是TempData中的数据";
            
return View("Index2");
        }
        
public ActionResult  Index3(string name)
        {
            
            Models.ViewModels.UserViewModel userVM
=new Models.ViewModels.UserViewModel()
            {
                Name
=name
            };
            
return View(userVM );
        }
    }

 

  在Index2和Index3两个View中分别加入下面的代码,就是显示一下ViewData和TempData中的内容。

  为了显示效果,在Index2的View中加入下面的代码。<%Html.RenderAction("Index3"); %>  这句直接呈现Index3的View,直接可以看到效果。

<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> --> <div>
      1 <%= ViewData["ViewData"%><br />
   2 <%=TempData["TempData"%>
    
</div>
    
<br />
    
<%Html.RenderAction("Index3"); %>

 

 

  在Index3的View中加入下面的代码

<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> --> <h2>ViewPage1</h2>
    
<%=Model.Name %>
    
<br />
     
<div>
      1 <%= ViewData["ViewData"%><br />
   2 <%=TempData["TempData"%>
    
</div>

 

  结果就是

 

 

 

  大家注意看上图中的两个红色框,第一个框中显示都有数据,第二个框中显示只有TempData中还有数据。

 
 
 1.2 Post-Redirect-Get防止刷新页面造成的重复提交数据
 

 

   在ASP.NET中要防止用户刷新页面,重复提交数据的话。需要在页面里面写JavaScript,而且要在后台c#代码中判断数据是否已经提交,才可以做到万无一失。

  在ASP.NET 的 MVC框架中要实现防止刷新页面非常的简单,就是利用上面介绍的TempData来实现的。TempData用来传递数据,支持跨action传递,但是只能第一次进入action的时候访问,后面再次访问的话,TempData中的数据就会丢失。就是利用了这一点,在提交页面将提交的内容放入TempData中,然后再成功的提示页面获取出来,如果TempData["Data"]=null的话,就说明是用户在刷新页面,可以跳转到其他view或者做个提示。

  具体代码如下:

  实体

  

 

实体
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Mvc3EmptyApp.Models.Entities
{
    
public class GuestBook
    {
        
public string Name { getset; }
        
public string Email { getset; }
        
public string Comments { getset; }
    }
}

 

 

  

 

Controller
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Mvc3EmptyApp.Controllers
{
    
public class GuestBookController : Controller
    {
        
//
        
// GET: /GuestBook/

        
public ActionResult Index()
        {
            var entity 
= new Models.Entities.GuestBook();
            
return View(entity );
        }
        [HttpPost]
        
public ActionResult Index(Models.Entities.GuestBook guest)
        {
            TempData[
"entity"= guest;
            
return RedirectToAction("ThankYou");
        }

        
public ActionResult ThankYou()
        {
            
if (TempData["entity"== null)
            {
                
return RedirectToAction("Index");
            }
            var model 
= TempData["entity"as Models.Entities.GuestBook;
            
return View(model);
        }
    }
}

 

 

   新建view的时候选择强类型的view(create a strongly-typed view)

 

Index View
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Mvc3EmptyApp.Models.Entities.GuestBook>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    
<h2>Index</h2>
    
<% using (Html.BeginForm())
       { 
%>
       
<p>
        
<%=Html.LabelFor (model=>model.Name) %>
        
<%=Html.TextBoxFor (model=>model.Name) %>
        
</p>

        
<p>
        
<%=Html.LabelFor (model=>model.Email ) %>
        
<%=Html.TextBoxFor (model=>model.Email ) %>
        
</p>

        
<p>
        
<%=Html.LabelFor (model=>model.Comments ) %>
        
<%=Html.TextAreaFor (model=>model.Comments ) %>
        
</p>

        
<p>
       
<input type="submit" value="Sign" />
        
</p>
    
<%%>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="Header" runat="server">
</asp:Content>

<asp:Content ID="Content4" ContentPlaceHolderID="SideBar" runat="server">
</asp:Content>

<asp:Content ID="Content5" ContentPlaceHolderID="Footer" runat="server">
</asp:Content>

 

 

   

 

ThankYou View
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Mvc3EmptyApp.Models.Entities.GuestBook>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    ThankYou
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    
<h2>ThankYou</h2>
    
<%=Html.DisplayForModel() %>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="Header" runat="server">
</asp:Content>

<asp:Content ID="Content4" ContentPlaceHolderID="SideBar" runat="server">
</asp:Content>

<asp:Content ID="Content5" ContentPlaceHolderID="Footer" runat="server">
</asp:Content>

 

 

 

   代码下载:/Files/virusswb/Mvc3EmptyApp.rar

分享到:
评论

相关推荐

    asp.net MVC电商商城项目.rar

    ASP.NET MVC是一个强大的框架,用于构建可扩展的、高性能的Web应用程序。这个“asp.net MVC电商商城项目”可能是一个实际的示例,用于演示如何利用ASP.NET MVC技术来开发一个完整的电子商务平台。在这个项目中,我们...

    Jquery Mobile +Asp.net

    ASP.NET 是微软推出的一套用于构建Web应用的开发框架,而ASP.NET MVC(Model-View-Controller)模式则提供了一种清晰的软件架构,将业务逻辑、视图呈现和用户交互分离。主要优势有: 1. **分层架构**:MVC模式将...

    基于ASP.NET的在线选课系统

    ### 基于ASP.NET的在线选课系统关键知识点解析 #### 一、项目背景与意义 在当今数字化时代,计算机网络技术的应用已经渗透到社会生活的方方面面,包括教育领域也不例外。随着高等教育机构的学生规模不断扩大以及...

    Asp.net夜话.pdf

    其次,可能会讲解ASP.NET的MVC(Model-View-Controller)模式,这是一种流行的软件设计模式,用于分离应用程序的业务逻辑、用户界面和数据访问。ASP.NET MVC框架允许开发者更加灵活地组织代码,实现可测试性和可维护...

    .NET软件架构之美(第2版)

    1. **软件架构基础**:书中首先介绍了软件架构的概念,它是系统整体结构的高级抽象,包括组件、接口和组件间的交互。理解架构的重要性在于它决定了系统的可读性、可扩展性和可维护性。 2. **.NET Framework与.NET ...

    asp.net 旅游管理系统全套资料 设计

    总的来说,ASP.NET旅游管理系统是一个集成了信息展示、交互和管理的综合平台,它的开发和应用对于旅行社提升工作效率、改善服务质量具有重要意义。通过不断迭代和完善,这个系统有望成为旅游业信息化发展的重要推动...

    asp.net web应用程序设计教程

    1. **ASP.NET架构**:ASP.NET是基于HTTP的服务器端技术,用于创建交互式、数据驱动的Web应用。它包括多种模型,如Web Forms、MVC(模型-视图-控制器)和Web API,分别适用于不同类型的开发需求。 2. **Web Forms**...

    考勤系统(ASP.NET)

    在考勤系统中,ASP.NET4.0可能利用了其MVC(Model-View-Controller)架构,通过分离业务逻辑、视图呈现和用户交互,提高代码的可维护性和可测试性。此外,ASP.NET4.0的页面生命周期管理、状态管理机制也对系统的稳定...

    ASP.NET在线考试系统-计算机函授本科论文.doc

    ### ASP.NET在线考试系统知识点概览 #### 一、项目背景及技术选型 ##### .NET框架概述 .NET框架是由微软公司开发的一个软件框架,它为开发者提供了丰富的类库和服务,支持多种编程语言(如C#、VB.NET等),使得...

    ASP.NET一本很好的书籍,适合初学者。

    1. **ASP.NET架构**:介绍ASP.NET的核心组件,如HttpApplication、HttpRequest、HttpResponse以及Page生命周期,解释这些组件如何协同工作来处理Web请求。 2. **Web Forms**:这是ASP.NET的一个重要模型,允许...

    ASP.NET 企业信息管理系统 整站 带数据库 源代码系统

    这个整站源代码系统包含了从用户界面到后端数据库的完整实现,对于学习ASP.NET开发、理解企业级应用架构以及数据库设计有着重要的参考价值。 首先,ASP.NET是微软推出的一种用于构建动态网站、Web应用和服务的技术...

    c#.net 婚姻管理系统

    本篇文章将详细探讨一个基于C#.NET的婚姻管理系统,通过源代码分析和说明文档,我们能够深入理解系统的架构、功能实现以及设计思路。 首先,婚姻管理系统的核心目标是提供一个平台,方便用户进行婚姻相关的事务管理...

    ASP.net 医院系统

    ASP.NET的响应式设计和MVC架构可以确保系统在不同设备上良好运行。 9. **持续集成和部署**:ASP.NET支持DevOps实践,通过Visual Studio等工具实现代码版本控制、自动化测试和持续部署,加速软件开发周期。 10. **...

    C# asp.net入门

    理解MVC架构的三个组成部分,如何分离关注点,以及如何使用路由、控制器和视图来构建可维护的Web应用,是现代ASP.NET开发的关键。 5. **ASP.NET Identity**:ASP.NET Identity是用于身份验证和授权的框架,它提供了...

    .NET平台下MVC设计模式的实现

    随着.NET平台的日益普及和发展,MVC(Model-View-Controller)设计模式作为一套成熟的软件架构模式,在.NET平台上的应用越来越广泛。MVC模式最初源于J2EE平台,但随着.NET的发展,这种模式在.NET环境中的应用也...

    北大青鸟Y2ASP.NET酒店管理系统

    【北大青鸟Y2ASP.NET酒店管理系统】是一个教学项目,旨在帮助初学者了解和掌握ASP.NET技术在实际应用中的运用,特别是针对酒店管理行业的系统开发。在这个项目中,你将学习到一系列关键的IT知识点,涵盖了数据源控件...

    ASP.NET-[其他类别]KilosailSystemFrameworkExamples.zip

    ASP.NET是微软开发的一种用于构建Web应用程序的框架,它基于.NET Framework,提供了丰富的功能和工具,使得开发者可以更高效地创建动态网站、Web服务和Web应用程序。Kilosail System Framework Examples是一个专门...

    ASP.NET面试题大全

    2. **MVC(Model-View-Controller)**:ASP.NET MVC模式是一种更灵活的开发方式,强调分层架构,便于测试和维护。理解模型、视图和控制器的角色及其交互是必要的。 3. **razor语法**:Razor视图引擎在ASP.NET MVC和...

Global site tag (gtag.js) - Google Analytics