- 浏览: 496140 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1028)
- [发布至博客园首页] (826)
- [随笔分类]个人生活随笔 (14)
- [网站分类]首页候选区 (26)
- [网站分类]SharePoint (15)
- [网站分类]其他技术区 (6)
- [随笔分类]批处理技巧 (6)
- [随笔分类].net 2.0 (3)
- [随笔分类]SharePoint2007(MOSS2007) (0)
- [网站分类].NET新手区 (6)
- [网站分类]ASP.NET (6)
- [网站分类]架构设计 (18)
- [网站分类]程序人生 (2)
- [网站分类]SQL Server (2)
- WCF (3)
- 编程技巧 (2)
- 模式架构 (2)
- 分析设计 (4)
- 生活随笔 (0)
- 软件工程 (1)
- Android实例 (2)
最新评论
-
zilong0536:
楼主您好:
请问发表博文支持图片的功能怎么实现啊,一直没有思路 ...
新浪微博开放平台开发-android客户端(3) -
nicegege:
小弟 学习了
帮助中国移动设计10086的排队小模块 -
zl7824516:
用什么技术没说啊
通告(公告),消息(站内短信),提醒的设计:通告 -
virusswb:
源码下载: SinaWeibo2 源码下载之后,将后缀改为ra ...
新浪微博开放平台开发-android客户端(3) -
Jimmyxu0311:
找不到源码下载
新浪微博开放平台开发-android客户端(3)
应用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传递数据。
{
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,直接可以看到效果。
1 <%= ViewData["ViewData"] %><br />
2 <%=TempData["TempData"] %>
</div>
<br />
<%Html.RenderAction("Index3"); %>
在Index3的View中加入下面的代码
<%=Model.Name %>
<br />
<div>
1 <%= ViewData["ViewData"] %><br />
2 <%=TempData["TempData"] %>
</div>
结果就是
大家注意看上图中的两个红色框,第一个框中显示都有数据,第二个框中显示只有TempData中还有数据。
在ASP.NET中要防止用户刷新页面,重复提交数据的话。需要在页面里面写JavaScript,而且要在后台c#代码中判断数据是否已经提交,才可以做到万无一失。
在ASP.NET 的 MVC框架中要实现防止刷新页面非常的简单,就是利用上面介绍的TempData来实现的。TempData用来传递数据,支持跨action传递,但是只能第一次进入action的时候访问,后面再次访问的话,TempData中的数据就会丢失。就是利用了这一点,在提交页面将提交的内容放入TempData中,然后再成功的提示页面获取出来,如果TempData["Data"]=null的话,就说明是用户在刷新页面,可以跳转到其他view或者做个提示。
具体代码如下:
实体
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Mvc3EmptyApp.Models.Entities
{
public class GuestBook
{
public string Name { get; set; }
public string Email { get; set; }
public string Comments { get; set; }
}
}
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)
<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>
<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
发表评论
-
NET 应用架构指导 V2 学习笔记(十六) 服务层设计指导
2010-06-04 00:13 548如果你的应用是通 ... -
NET 应用架构指导 V2 学习笔记(十七) 组件设计指导
2010-06-05 00:48 671组件提供了一种将 ... -
NET 应用架构指导 V2 学习笔记(十八) 表现层组件设计指导
2010-06-05 21:09 528本章讲述的是你在设计用户界面组件和表现层逻辑组件的时候应该 ... -
NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导
2010-06-06 06:15 5945 决定数据绑定的 ... -
NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导
2010-06-07 06:58 615前言 业务组件 ... -
微软企业库5.0学习笔记(四十二)异常处理模块
2010-06-14 00:04 837企业库的异常处理 ... -
关于程序员在30岁、35岁之后怎么办的新思考
2010-06-14 10:40 624首先给大家问个好 ... -
NET 应用架构指导 V2 学习笔记(二十四) 跨层关注问题
2010-06-17 20:00 595概况 大部分的 ... -
微软企业库5.0学习笔记(四十三)数据验证模块
2010-06-19 08:07 996概况 任何接受用户或者是其他系统输入的应用,一定要确保 ... -
关于项目进度慢的思考----如何提高整体开发效率
2010-06-21 23:42 804我们都是软件行业 ... -
微软企业库5.0学习笔记(四十四)实战数据验证模块
2010-06-23 19:22 8411 在业务对象上添加验证 添加对程序集【Microso ... -
微软企业库5.0学习笔记(四十五)实战数据验证模块----高级篇
2010-06-24 19:41 9701、添加自定义的提示信息 验证失败的提示信息可以自定义 ... -
面向对象类设计的五大原则(一)单一职责原则Single Responsibility Principle
2010-06-29 15:45 778引言 面向对象类设计,或者说是面向对象设计,有五大原则 ... -
《深入浅出设计模式-中文版》读书笔记 开篇乱弹(一)
2010-07-01 06:42 650oreilly的《Head.First ... -
《深入浅出设计模式-中文版》读书笔记-继承与组合(三)
2010-07-03 16:53 605经过上一次的改造 ... -
《深入浅出设计模式-中文版》读书笔记-观察者模式(四)
2010-07-06 06:34 634今天要接触的是观 ... -
利用attribute实现简单的ORM
2010-07-09 15:27 683我不知道NH的ORM具 ... -
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
2010-07-14 13:02 807题外话 最近已经在努力学习了,学习基本功,学习设计模式 ... -
《深入浅出设计模式-中文版》读书笔记-工厂模式(五)
2010-07-16 12:46 699今天给大家带来的是:工厂模式。 我们在代码中创建一个对 ... -
Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(一)
2010-07-18 21:47 671题外话 又是一本Head.First系列的书,这个系列 ...
相关推荐
ASP.NET MVC是一个强大的框架,用于构建可扩展的、高性能的Web应用程序。这个“asp.net MVC电商商城项目”可能是一个实际的示例,用于演示如何利用ASP.NET MVC技术来开发一个完整的电子商务平台。在这个项目中,我们...
ASP.NET 是微软推出的一套用于构建Web应用的开发框架,而ASP.NET MVC(Model-View-Controller)模式则提供了一种清晰的软件架构,将业务逻辑、视图呈现和用户交互分离。主要优势有: 1. **分层架构**:MVC模式将...
### 基于ASP.NET的在线选课系统关键知识点解析 #### 一、项目背景与意义 在当今数字化时代,计算机网络技术的应用已经渗透到社会生活的方方面面,包括教育领域也不例外。随着高等教育机构的学生规模不断扩大以及...
其次,可能会讲解ASP.NET的MVC(Model-View-Controller)模式,这是一种流行的软件设计模式,用于分离应用程序的业务逻辑、用户界面和数据访问。ASP.NET MVC框架允许开发者更加灵活地组织代码,实现可测试性和可维护...
1. **软件架构基础**:书中首先介绍了软件架构的概念,它是系统整体结构的高级抽象,包括组件、接口和组件间的交互。理解架构的重要性在于它决定了系统的可读性、可扩展性和可维护性。 2. **.NET Framework与.NET ...
总的来说,ASP.NET旅游管理系统是一个集成了信息展示、交互和管理的综合平台,它的开发和应用对于旅行社提升工作效率、改善服务质量具有重要意义。通过不断迭代和完善,这个系统有望成为旅游业信息化发展的重要推动...
1. **ASP.NET架构**:ASP.NET是基于HTTP的服务器端技术,用于创建交互式、数据驱动的Web应用。它包括多种模型,如Web Forms、MVC(模型-视图-控制器)和Web API,分别适用于不同类型的开发需求。 2. **Web Forms**...
在考勤系统中,ASP.NET4.0可能利用了其MVC(Model-View-Controller)架构,通过分离业务逻辑、视图呈现和用户交互,提高代码的可维护性和可测试性。此外,ASP.NET4.0的页面生命周期管理、状态管理机制也对系统的稳定...
### ASP.NET在线考试系统知识点概览 #### 一、项目背景及技术选型 ##### .NET框架概述 .NET框架是由微软公司开发的一个软件框架,它为开发者提供了丰富的类库和服务,支持多种编程语言(如C#、VB.NET等),使得...
1. **ASP.NET架构**:介绍ASP.NET的核心组件,如HttpApplication、HttpRequest、HttpResponse以及Page生命周期,解释这些组件如何协同工作来处理Web请求。 2. **Web Forms**:这是ASP.NET的一个重要模型,允许...
这个整站源代码系统包含了从用户界面到后端数据库的完整实现,对于学习ASP.NET开发、理解企业级应用架构以及数据库设计有着重要的参考价值。 首先,ASP.NET是微软推出的一种用于构建动态网站、Web应用和服务的技术...
本篇文章将详细探讨一个基于C#.NET的婚姻管理系统,通过源代码分析和说明文档,我们能够深入理解系统的架构、功能实现以及设计思路。 首先,婚姻管理系统的核心目标是提供一个平台,方便用户进行婚姻相关的事务管理...
ASP.NET的响应式设计和MVC架构可以确保系统在不同设备上良好运行。 9. **持续集成和部署**:ASP.NET支持DevOps实践,通过Visual Studio等工具实现代码版本控制、自动化测试和持续部署,加速软件开发周期。 10. **...
理解MVC架构的三个组成部分,如何分离关注点,以及如何使用路由、控制器和视图来构建可维护的Web应用,是现代ASP.NET开发的关键。 5. **ASP.NET Identity**:ASP.NET Identity是用于身份验证和授权的框架,它提供了...
随着.NET平台的日益普及和发展,MVC(Model-View-Controller)设计模式作为一套成熟的软件架构模式,在.NET平台上的应用越来越广泛。MVC模式最初源于J2EE平台,但随着.NET的发展,这种模式在.NET环境中的应用也...
【北大青鸟Y2ASP.NET酒店管理系统】是一个教学项目,旨在帮助初学者了解和掌握ASP.NET技术在实际应用中的运用,特别是针对酒店管理行业的系统开发。在这个项目中,你将学习到一系列关键的IT知识点,涵盖了数据源控件...
ASP.NET是微软开发的一种用于构建Web应用程序的框架,它基于.NET Framework,提供了丰富的功能和工具,使得开发者可以更高效地创建动态网站、Web服务和Web应用程序。Kilosail System Framework Examples是一个专门...
2. **MVC(Model-View-Controller)**:ASP.NET MVC模式是一种更灵活的开发方式,强调分层架构,便于测试和维护。理解模型、视图和控制器的角色及其交互是必要的。 3. **razor语法**:Razor视图引擎在ASP.NET MVC和...