Aspnet MVC2.0系列文章-添加操作
- 格式:pdf
- 大小:446.62 KB
- 文档页数:9
webmvcconfigurer 的addargumentresolvers 方法addArgumentResolvers() 方法是在 WebMvcConfigurer 接口中定义的一个方法。
该方法的作用是用来自定义 Spring MVC 中请求参数的解析器,即自定义处理方法参数的方式。
首先,我们需要了解在 Spring MVC 中处理请求时,方法参数的解析方式。
通常情况下,Spring MVC 会根据注解来解析方法参数。
例如,可以使用@RequestParam 注解来获取请求参数的值,使用 @PathVariable 注解来获取路径变量的值,使用 @RequestBody 注解来获取请求体的值等。
这些注解是 Spring MVC 提供的默认的参数解析方式。
然而,在某些情况下,这些默认的参数解析方式可能无法满足我们的需求。
例如,我们可能希望在方法中直接使用自定义的对象作为参数,而不是分别获取每个请求参数的值。
这个时候,我们就可以使用 addArgumentResolvers() 方法来注册自定义的参数解析器。
为了使用 addArgumentResolvers() 方法,我们需要先实现一个实现了HandlerMethodArgumentResolver 接口的自定义参数解析器。
HandlerMethodArgumentResolver 接口是 Spring MVC 中用于处理方法参数的解析器的接口,它有两个方法需要实现:supportsParameter() 和 resolveArgument()。
首先,我们需要在自定义参数解析器的 supportsParameter() 方法中判断方法参数类型是否匹配我们需要处理的类型。
如果匹配,则返回 true,表示这个参数解析器可以处理该类型的参数;如果不匹配,则返回 false,表示不能处理该类型的参数。
然后,在自定义参数解析器的 resolveArgument() 方法中,我们可以编写自己的逻辑来解析方法参数。
WebMvcConfigurer用法一、概述WebMvcConfigurer是Spring框架中用来配置Web MVC的接口。
通过实现该接口,我们可以对Spring MVC的行为进行自定义配置,包括添加拦截器、视图解析器、消息转换器等等。
在实际开发中,我们经常会使用WebMvcConfigurer来进行一些定制化的配置,以满足项目的特定需求。
二、使用方式1. 创建一个类并实现WebMvcConfigurer接口我们需要创建一个新的类,并实现WebMvcConfigurer接口。
在该类中,我们可以重写一些方法来实现自定义的配置。
示例代码如下:```javaConfigurationpublic class MyWebMvcConfigurer implements WebMvcConfigurer {// 在这里可以重写WebMvcConfigurer的方法来实现自定义配置}```2. 添加Configuration注解在实现了WebMvcConfigurer接口的类上,我们需要添加Configuration注解,以告诉Spring容器这是一个配置类。
示例代码如下:```javaConfigurationpublic class MyWebMvcConfigurer implements WebMvcConfigurer {// 在这里可以重写WebMvcConfigurer的方法来实现自定义配置}```3. 重写需要配置的方法在实现WebMvcConfigurer接口的类中,我们可以根据需要重写一些方法来进行自定义配置。
以下是一些常用的配置方法:- 添加拦截器```javaOverridepublic void addInterceptors(InterceptorRegistry registry) {// 在这里可以添加自定义的拦截器}```- 配置视图解析器```javaOverridepublic void configureViewResolvers(ViewResolverRegistry registry) {// 在这里可以配置视图解析器}```- 配置消息转换器```javaOverridepublic voidconfigureMessageConverters(List<HttpMessageConverter<?>> converters) {// 在这里可以配置消息转换器}```- 配置静态资源```javaOverridepublic void addResourceHandlers(ResourceHandlerRegistryregistry) {// 在这里可以配置静态资源的映射}```- 配置跨域访问```javaOverridepublic void addCorsMappings(CorsRegistry registry) { // 在这里可以配置跨域访问规则}```- 配置路径匹配规则```javaOverridepublic void configurePathMatch(PathMatchConfigurer configurer) {// 在这里可以配置路径匹配规则}```- 配置跳转规则```javaOverridepublic void addViewControllers(ViewControllerRegistry registry) {// 在这里可以配置跳转规则}```三、总结在本文中,我们介绍了WebMvcConfigurer的用法,其中包括了创建实现WebMvcConfigurer接口的类、添加Configuration注解以及对一些常用配置方法的重写。
利⽤VS2010,给⾃⼰的MVC添加⾃⼰的控制器模板利⽤VS2010,给⾃⼰的 MVC添加⾃⼰的控制器模板,也就是新建⼀个Controller的时候,默认的代码。
步骤如下:1. 新建⼀个MVC项⽬,在根⽬录下依次新建CodeTemplates>AddController⽂件夹。
2. 在AddController⽂件夹下新建Controller.tt⽂件,截图如下:3. 编写你的模板,我编写的如下:<#@ template language="C#" HostSpecific="True" #><#@ import namespace="" #><#var mvcHost = (MvcTextTemplateHost)(Host);// You can use Reflector to see the available MvcTextTemplateHost properties, it's in this assembly:// "C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Microsoft.VisualStudio.Web.Mvc.3.0.dll"#>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace <#= space #>{public partial class <#= mvcHost.ControllerRootName #>Controller : Controller{[HttpGet]public ActionResult Index(){return View();}[HttpPost][ValidateAntiForgeryToken]public ActionResult Index(IndexModel model){if (!ModelState.IsValid){return View();}return null;}}public partial class <#= mvcHost.ControllerRootName #>Controller{public class IndexModel{// public string Property1 { get; set; }}}}5. 编译⽣成,OK!以后就可以添加⾃⼰的Controller模板了!谢谢浏览!。
ASP实验指导书目录实验1: ASP Web服务器的安装与配置................................- 1 - 实验2:HTML标记符的使用(表格、表单对象、CSS样式) ......................................................................................................- 3 - 实验3:VBScript 程序设计..................................................- 5 - 实验4:ASP内建对象..............................................................- 7 - 实验5:数据库基础知识 ......................................................- 10 - 实验6:ASP存取数据库 .......................................................- 12 - 实验7:深入进行数据库编程..............................................- 13 - 实验8:文件存取组件及其他组件 .....................................- 16 -实验1:ASP Web服务器的安装与配置一、实验目的熟悉IIS的安装过程与配置方法。
通过编写简单的ASP页面,掌握ASP网页的编写和运行方法。
二、实验器材及数量Windows Server计算机系统,安装IIS、Macromedia Dreamweaver 8.0、Internet Explorer浏览器、Access数据库等。
三、实验原理利用ASP中对象的方法、事件、属性制作动态网页。
AJAX入门系列:使用UpdatePanel控件<<!----></ContenteTemplateContainer <Background:<br /><asp:DropDownList ID="ColorList" AutoPostBack="True" OnSelectedIndexC hanged="DropDownSelection_Change"runat="server"><asp:ListItem Selected="True" Value="White">White </asp:ListItem><asp:ListItem Value="Silver">Silver </asp:ListItem><asp:ListItem Value="DarkGray">Dark Gray </asp:ListItem><asp:ListItem Value="Khaki">Khaki </asp:ListItem><asp:ListItem Value="DarkKhaki"> Dark Khaki </asp:ListItem></asp:DropDownList></div></ContentTemplate></asp:UpdatePanel>事件代码:<script runat="server">void DropDownSelection_Change(Object sender, EventArgs e){Calendar1.DayStyle.BackColor =System.Drawing.Color.FromName(ColorList.SelectedItem.Value);}</script>四.ContentTemplateContainer属性如果要使用编程的手法去设置UpdatePanel中的内容,需要创建一个UpdatePanel,并且添加控件到ContentTemplateContainer,而不能直接添加控件到ContentTemplate,如果想直接设置ContentTemplate,则需要编写一个自定义的Template,并去实现位于System.Web.UI命名空间下的接口ITemplate。
MVC教程⼀:MVC简介⼀、MVC模式简介MVC模式是⼀种流⾏的Web应⽤架构技术,它被命名为模型-视图-控制器(Model-View-Controller)。
在分离应⽤程序内部的关注点⽅⾯,MVC是⼀种强⼤⽽简洁的⽅式,尤其适合应⽤在Web应⽤程序中。
MVC将应⽤程序的⽤户界⾯分为三个主要部分:1. 模型:⼀组类,描述了要处理的数据以及修改和操作数据的业务规则。
2. 视图:定义应⽤程序⽤户界⾯的显⽰⽅式。
3. 控制器:⼀组类,⽤于处理来⾃⽤户、整个应⽤程序流以及特定应⽤程序逻辑的通信。
1、MVC在Web框架中的应⽤MVC模式经常应⽤于Web程序设计中。
在 MVC中,MVC三个主要部分的定义⼤致如下:模型:模型是描述程序设计⼈员感兴趣问题域的⼀些类,这些类通常封装存储在数据库中的数据,以及操作这些数据和执⾏特定域业务逻辑的代码。
在 MVC中,模型就像使⽤了某种⼯具的数据访问层(Daa Access Layer),这种⼯具包括实体框架(Entity Framework)或者与包含特定域逻辑的⾃定义代码组合在⼀起的其他实体框架。
视图:⼀个动态⽣成HTML页⾯的模板。
控制器:⼀个协调视图和模型直接关系的特殊类。
它响应⽤户输⼊,与模型进⾏对话,并决定呈现哪个视图(如果有的话)。
在 MVC中,这个类⽂件通常以后缀名Controller表⽰。
2、执⾏顺序在 MVC中的执⾏顺序可以⽤下图进⾏表⽰,如图所⽰:其执⾏顺序可以描述如下:⽤户在浏览器地址栏⾥⾯输⼊要访问的⽹址,然后发起请求,控制器接收⽹页发送的请求,如果需要请求数据,则先从Model⾥⾯取出数据交给控制器,然后把数据交给视图,视图负责展现数据。
如果不需要请求数据,则直接返回视图呈现给⽤户。
⼆、中的MVC1、 MVC和1. MVC是技术的⼦集。
2. MVC在核⼼基础之上构建:1. 依赖于HttpHandler,如请求是如何进⼊控制器的。
2. 依赖于Session、Cookie、Cache、Application等状态保持机制。
实现MVC处理⽂件的上传下载功能实例教程上传于下载功能是程序设计中⾮常常见的⼀个功能,在程序开发中有着⾮常⼴泛的应⽤。
本⽂就以实例形式来实现这⼀功能。
⼀、概述如果你仅仅只有 Web Forms背景转⽽学习 MVC的,我想你的第⼀个经历或许是那些曾经让你的编程变得愉悦⽆⽐的服务端控件都驾鹤西去了.FileUpload就是其中⼀个,⽽这个控件的缺席给我们带来⼀些⼩问题。
这篇⽂章主要说如何在 MVC中上传⽂件,然后如何再从服务器中把上传过的⽂件下载下来.⼆、实现⽅法1.⽂件上传在Web Forms中,当你把⼀个FileUpload控件拖到设计器中,你或许没有注意到在⽣成的HTML中会在form标签中加⼊⼀条额外属性enctype="multipart/form-data". ⽽FileUpload控件本⾝会⽣成为<input type=”file” />,在MVC的view⾥,有许多种⽅法可以做到同样效果,第⼀种的HTML如下:<form action="/" method="post" enctype="multipart/form-data"><input type="file" name="FileUpload1" /><br /><input type="submit" name="Submit" id="Submit" value="Upload" /></form>注意form标签已经包括了enctype标签,⽽method属性则设为”post”,这样设置并不多于因为默认的提交时通过HTTP get⽅式进⾏的。
下⾯这种⽅式,使⽤Html.BeginForm()扩展⽅法,会⽣成和上⾯同样的HTML:<%using (Html.BeginForm("", "home", FormMethod.Post, new {enctype="multipart/form-data"})){%><input type="file" name="FileUpload1" /><br /><input type="submit" name="Submit" id="Submit" value="Upload" /><% }%>注意<input type=”file”>标签的name属性,我们在后⾯再讨论OK,现在我们可以浏览本地⽂件然后通过Upload提交按钮将⽂件提交到服务器端,下⼀步就是在服务器端处理上传的⽂件,在使⽤fileUpload控件时,你可以很轻松的通过FileUpload的hasFile⽅法来查看⽂件是否被上传。
WebApi项⽬⽰例(增删改查)1.WebApi是什么 Web API 是⼀种框架,⽤于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务。
Web API 是⼀种⽤于在 .NET Framework 上构建 RESTful 应⽤程序的理想平台。
可以把WebApi看成项⽬类型中的⼀种,其他项⽬类型诸如我们熟知的WebForm项⽬,Windows窗体项⽬,控制台应⽤程序等。
WebApi类型项⽬的最⼤优势就是,开发者再也不⽤担⼼客户端和服务器之间传输的数据的序列化和反序列化问题,因为WebApi是强类型的,可以⾃动进⾏序列化和反序列化,⼀会⼉项⽬中会见到。
下⾯我们建⽴了⼀个WebApi类型的项⽬,项⽬中对产品Product进⾏增删改查,Product的数据存放在List<>列表(即内存)中。
2.页⾯运⾏效果如图所⽰,可以添加⼀条记录; 输⼊记录的Id,查询出该记录的其它信息;修改该Id的记录;删除该Id的记录。
3.⼆话不说,开始建项⽬1)新建⼀个“ MVC 4 Web 应⽤程序”项⽬,命名为“ProductStore”,点击确定,如图2)选择模板“Web API”,点击确定,如图3)和MVC类型的项⽬相似,构建程序的过程是先建⽴数据模型(Model)⽤于存取数据, 再建⽴控制器层(Controller)⽤于处理发来的Http请求,最后构造显⽰层(View)⽤于接收⽤户的输⼊和⽤户进⾏直接交互。
这⾥我们先在Models⽂件夹中建⽴产品Product类: Product.cs,如下:using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace ProductStore.Models{public class Product{public int Id { get; set; }public string Name { get; set; }public string Category { get; set; }public decimal Price { get; set; }}}4)试想,我们⽬前只有⼀个Product类型的对象,我们要编写⼀个类对其实现增删改查,以后我们可能会增加其他的类型的对象,再需要编写⼀个对新类型的对象进⾏增删改查的类,为了便于拓展和调⽤,我们在Product之上构造⼀个接⼝,使这个接⼝约定增删改查的⽅法名称和参数,所以我们在Models⽂件夹中新建⼀个接⼝: IProductRepository.cs ,如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ProductStore.Models{interface IProductRepository{IEnumerable<Product> GetAll();Product Get(int id);Product Add(Product item);void Remove(int id);bool Update(Product item);}}5)然后,我们实现这个接⼝,在Models⽂件夹中新建⼀个类,具体针对Product类型的对象进⾏增删改查存取数据,并在该类的构造⽅法中,向List<Product>列表中存⼊⼏条数据,这个类叫:ProductRepository.cs,如下:using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace ProductStore.Models{public class ProductRepository:IProductRepository{private List<Product> products = new List<Product>();private int _nextId = 1;public ProductRepository(){Add(new Product { Name="Tomato soup",Category="Groceries",Price=1.39M});Add(new Product { Name="Yo-yo",Category="Toys",Price=3.75M});Add(new Product { Name = "Hammer", Category = "Hardware", Price = 16.99M });}public IEnumerable<Product> GetAll(){return products;}public Product Get(int id){return products.Find(p=>p.Id==id);}public Product Add(Product item){if (item == null){throw new ArgumentNullException("item");}item.Id = _nextId++;products.Add(item);return item;}public void Remove(int id){products.RemoveAll(p=>p.Id==id);}public bool Update(Product item){if (item == null){throw new ArgumentNullException("item");}int index = products.FindIndex(p=>p.Id==item.Id);if (index == -1){return false;}products.RemoveAt(index);products.Add(item);return true;}}}此时,Model层就构建好了。
实现动态添加table⾏动态的⽣成,删除table的⾏,主要是在后台动态创建单元⾏,单元表格,效果图:2.代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="releaseAffair.aspx.cs" Inherits="affair_releaseAffair" %><!DOCTYPE html><!--发布事务页⾯:名称AffairName,内容content,创建⽇期--><html xmlns="/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title></head><body><form id="form1" runat="server"><div><table><tr><td>发布个⼈事务</td></tr><tr><td>事务名称:<asp:TextBox runat="server" ID="text_affairName"></asp:TextBox></td></tr><tr><td>事务内容:<asp:TextBox runat="server" ID="text_affairContent" TextMode="MultiLine" Width="500px" Height="100px"></asp:TextBox> </td></tr></table><br /><asp:Table ID="tableTarget" runat="server" Width="100%" CellSpacing="0" CaptionAlign="Bottom" CellPadding="2" ></asp:Table><div><asp:Button runat="server" ID="btnAddRow" Text="添加" OnClick="btnAddRow_Click"/><asp:Button runat="server" ID="btnDelRow" Text="删除" OnClick="btnDelRow_Click" /><asp:Button runat="server" ID="btnSave" Text="保存" OnClick="btnSave_Click" /></div></div></form></body></html> 后台代码:using System;using System.Collections.Generic;using System.Data.SqlClient;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class affair_releaseAffair : System.Web.UI.Page{Sqlhelper sp = null;SqlDataReader dr = null;SqlCommand comm = null;protected void Page_Load(object sender, EventArgs e){if (Session["username"] != null){if (ViewState["count"] != null){//每次刷新都重新建⽴表格循环再次添加⾏for (int i = 0; i < Convert.ToInt16(ViewState["count"])/2; i++){AddRows(tableTarget);}}}else {Response.Write("<script>alert('请先登录!')</script>");// Server.Transfer("~/login.aspx");Response.Write("<script>top.window.location.href = '../login.aspx?r='+Math.random() ;</script>");//Response.Write("<script>window.location='../login.aspx';</script>");//Response.Redirect("~/login.aspx",true);}}// 删除按钮事件,总是默认删除表的最后⼀⾏protected void btnDelRow_Click(object sender, EventArgs e){tableTarget.Rows.RemoveAt(tableTarget.Rows.Count - 1);tableTarget.Rows.RemoveAt(tableTarget.Rows.Count - 1);ViewState["count"] = Convert.ToInt16(ViewState["count"]) - 2;}protected void btnAddRow_Click(object sender, EventArgs e){AddRows(tableTarget);ViewState["count"] = Convert.ToInt16(ViewState["count"]) + 2; //记录的table⾏数。
MVC实例入门初次学习 MVC,因此简单的记录一下自己的学习过程和经历,以便后面学习参考,同时也为后来者做出自己的一点点贡献。
第一步:创建一个新的MVC4项目。
打开VS2012,在“文件”菜单下选择“新建”下拉菜单下的“项目”,在弹出的“新建项目”对话框中选择[Web]选项卡,选择[ MVC 4 Web 应用程序],在名称里输入:MyFirstMvcApplication,点击确定,即完成项目的新建。
在稍后弹出的“选择模板”中选择【基本】,然后点击确定,即完成一个MVC项目的创建。
如下图所示:默认情况下的项目结构如图所示:创建完成后,我们可以发现,新建项目的同时创建了一个与之同名的解决方案。
MVC默认情况下,在新建项目的同时创建一个解决方案。
开发者可以在解决方案中任意添加项目。
新建完成时,我们可以看到Controllers文件夹、Models文件夹下都是空的,什么也没有;Views文件夹下默认有个Shared文件夹。
MVC文件夹介绍可以参看《 MVC –经典入门教程(推荐阅读)》。
备注:所有MVC 应用程序中的文件夹名称都是相等的。
MVC 框架基于默认的命名。
控制器位于Controllers 文件夹,视图位于Views 文件夹,模型位于Models 文件夹。
您不必在应用程序代码中使用文件夹名称。
标准化的命名减少了代码量,同时有利于开发者对MVC 项目的理解。
下面是对每个文件夹内容的简要描述:1.App_Data 文件夹App_Data 文件夹用于存储应用程序数据。
我们将在本教程稍后的章节向App_Data 文件夹添加SQL 数据库。
2.Content 文件夹Content 文件夹用于静态文件,比如样式表(CSS 文件)、图表和图像。
Visual Web Developer 会自动向Content 文件夹添加一个 themes 文件夹。
这个themes 文件夹存放jQuery 样式和图片。
在这个项目中,您可以删除这个主题文件夹。
中FormView(表单视图)的使⽤前台绑定 中 FormView(表单视图)的使⽤前台绑定。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Fvw.aspx.cs" Inherits="Fvw" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>⽆标题页</title></head><body><form id="form1" runat="server"><div><h3>FromView</h3><hr /><asp:FormView ID="fvw" runat="server" AllowPaging="True"DataKeyNames="ProductID" DataSourceID="SqlDataSource1"><EditItemTemplate>ProductID:<asp:Label ID="ProductIDLabel1" runat="server"Text='<%# Eval("ProductID") %>' /><br />ProductName:<asp:TextBox ID="ProductNameTextBox" runat="server"Text='<%# Bind("ProductName") %>' /><br />CategoryID:<asp:TextBox ID="CategoryIDTextBox" runat="server"Text='<%# Bind("CategoryID") %>' /><br />UnitPrice:<asp:TextBox ID="UnitPriceTextBox" runat="server"Text='<%# Bind("UnitPrice") %>' /><br /><asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True"CommandName="Update" Text="更新"/> <asp:LinkButton ID="UpdateCancelButton" runat="server"CausesValidation="False" CommandName="Cancel" Text="取消"/></EditItemTemplate><InsertItemTemplate>ProductName:<asp:TextBox ID="ProductNameTextBox" runat="server"Text='<%# Bind("ProductName") %>' /><br />CategoryID:<asp:TextBox ID="CategoryIDTextBox" runat="server"Text='<%# Bind("CategoryID") %>' /><br />UnitPrice:<asp:TextBox ID="UnitPriceTextBox" runat="server"Text='<%# Bind("UnitPrice") %>' /><br /><asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"CommandName="Insert" Text="插⼊"/> <asp:LinkButton ID="InsertCancelButton" runat="server"CausesValidation="False" CommandName="Cancel" Text="取消"/></InsertItemTemplate><ItemTemplate>ProductID:<asp:Label ID="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /><br />ProductName:<asp:Label ID="ProductNameLabel" runat="server"Text='<%# Bind("ProductName") %>' /><br />CategoryID:<asp:Label ID="CategoryIDLabel" runat="server"Text='<%# Bind("CategoryID") %>' /><br />UnitPrice:<asp:Label ID="UnitPriceLabel" runat="server" Text='<%# Bind("UnitPrice") %>' /><br /><asp:LinkButton ID="EditButton" runat="server" CausesValidation="False"CommandName="Edit" Text="编辑"/> <asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False"CommandName="Delete" Text="删除"/> <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False"CommandName="New" Text="新建"/></ItemTemplate></asp:FormView><asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"DeleteCommand="DELETE FROM [Products] WHERE [ProductID] = @ProductID"InsertCommand="INSERT INTO [Products] ([ProductName], [CategoryID], [UnitPrice]) VALUES (@ProductName, @CategoryID, @UnitPrice)"SelectCommand="SELECT [ProductID], [ProductName], [CategoryID], [UnitPrice] FROM [Products] ORDER BY [ProductID] DESC"UpdateCommand="UPDATE [Products] SET [ProductName] = @ProductName, [CategoryID] = @CategoryID, [UnitPrice] = @UnitPrice WHERE [ProductID] = @ProductID"> <DeleteParameters><asp:Parameter Name="ProductID" Type="Int32"/></DeleteParameters><UpdateParameters><asp:Parameter Name="ProductName" Type="String"/><asp:Parameter Name="CategoryID" Type="Int32"/><asp:Parameter Name="UnitPrice" Type="Decimal"/><asp:Parameter Name="ProductID" Type="Int32"/></UpdateParameters><InsertParameters><asp:Parameter Name="ProductName" Type="String"/><asp:Parameter Name="CategoryID" Type="Int32"/><asp:Parameter Name="UnitPrice" Type="Decimal"/></InsertParameters></asp:SqlDataSource></div></form></body></html>/web.config<connectionStrings><add name="NorthwindConnectionString" connectionString="DataSource=.;Initial Catalog=Northwind;Integrated Security=True"providerName="System.Data.SqlClient"/></connectionStrings>。
第一章2.0和简介1.1技术概述大约有将近一百万名开发人员使用了.NET Framework的第一个版本来开发网站。
所以在2003年的夏天,当从Microsoft传出将有新版本发布的传闻时,许多人的耳朵都竖了起来,这个新的版本将使得创建页面所需的代码行数减少70%。
像这样大规模的提高生产效率在程序设计中是不多见的。
当 2.0的代码样例在2003年秋的Microsoft专业开发人员大会(Microsoft Professional Developer’s Conference)上演示时,结果比预计的还要好。
以前使用的第一个版本程序员需要花费几个小时才能做出的页面,现在使用 2.0只需要几分钟就完成了。
简单来说,在.NET Framework 2.0最终版本发布之后,任何继续使用第一个版本创建页面的程序人员都将花费大量的额外时间才能达到相同的结果。
也许就像其他任何领域一样, 2.0所提供的优势是能够方便地将数据集成进页面。
程序员不再需要知道详细的连接、命令以及数据阅读器和数据适配器对象,就能执行普通数据任务了。
对于初学者掌握能力, 2.0使得基本数据的使用简单易学,并且有能力进行更复杂的数据应用。
1.1.1 .NET FrameworkMicrosoft开发出了作为基本原理的.NET和一系列技术,用于在互联网中让计算机共同工作。
总的目标就是让信息和进程在大范围的系统和设备之间顺畅地交流。
.NET不是一种语言,也不是一个特别的产品。
更确切地说,它是一套标准和规范,并已经应用于自2002年以来Microsoft发布的所有产品中。
.NET包含了一种使用开放标准的XML格式交换信息的标准化格式。
可扩展标记语言(Extensible Markup Language,XML)不需要请求者具备任何有关数据存储如何保存信息的专门知识——数据都以自描述的XML格式取出。
同样地,目前几乎所有的数据存储都可以用XML来提供信息,这对于所有.NET数据客户都具有吸引力。
ASP+ACCESS教程目录ASP+ACCESS教程 (1)一、安装调试ASP环境 (2)二、表单传送变量 (7)三、数据库的建立 (10)四、数据库的连接和读取 (13)五、写入记录 (14)六、查询记录 (16)七、删除记录 (19)八、修改记录 (21)九、组件介绍 (24)十、分页技术 (30)一、安装调试ASP环境学习目的:安装调试ASP的环境,并且调试第一个简单的程序。
因为我们学ASP的目的就是想建立一个网站,那么一般习惯是建立的网站内所有文件应该同时放到一个文件夹中(当然这个文件夹中还可以按需要设置子文件夹!),所以在这里我在E盘建立一个myweb的文件夹。
首先来安装Windows 2000/XP自带的IIS作为服务器。
在这里因为我的机器是XP所以所有截图都是XP下完成的。
控制面板-->>添加或删除程序。
然后是添加删除windows组件-选中IIS组件前面的勾,之后等待安装,这里可以观看本站以前给大家做的视频教程,完成安装后。
之后在控制面板中双击“管理工具”。
然后双击“internet信息服务”,这就是IIS。
选择“默认网站”,然后右键属性或者直接按快捷键在属性页面内只有三个页面需要修改,先是网站,如果用户有固定IP,可以分配一个I P接下来在注主目录中选择一个自己硬盘上面的文件夹存放网站(这个目录就是我们上面说的在e盘建立的目录),选中读取、写入在文档中添加默认的页面,比如打网页教学网就是调用了一个默认文档。
接下来也是最关键的:1、在刚才你定义的一个文件夹里面新建一个文件,可以用记事本建立一个文本文件然后把下面的内容复制到记事本中:保存为1.asp文件(注意:.asp不能省略啊,如果省略了你就保存了一个文本文件了)。
最后打开IE,在地址栏内输入:http://127.0.0.1/1.asp(或者http://localhost/1. asp)回车后就可以看到效果了。
最后解释一下代码的含义。
webmvcconfigurer 的addargumentresolvers 方法摘要:1.WebMVCConfigurer简介2.AddArgumentResolvers方法功能3.方法参数解析4.实战应用示例5.总结正文:【1】WebMVCConfigurer简介WebMVCConfigurer是Spring Web项目中一个重要的配置类,用于实现基于视图名称和视图类型的动态视图解析。
在WebMVCConfigurer中,有一个名为addArgumentResolvers的方法,该方法用于添加视图解析器的参数解析功能。
【2】AddArgumentResolvers方法功能AddArgumentResolvers方法主要用于接收视图解析器的参数,将这些参数与特定的视图解析器关联起来。
这样,在请求处理过程中,可以根据请求的参数值自动选择合适的视图解析器进行视图解析。
方法接收一个参数,该参数是一个实现了ArgumentResolver接口的类或者一个包含多个ArgumentResolver实例的集合。
【3】方法参数解析在AddArgumentResolvers方法中,参数为一个实现了ArgumentResolver接口的类或者一个包含多个ArgumentResolver实例的集合。
ArgumentResolver接口中定义了两个方法:resolveArgument和resolveSupported。
- resolveArgument方法:用于解析请求参数值,返回一个解析后的对象。
在实现此方法时,需要根据请求的参数名称和类型来创建一个对应的对象。
- resolveSupported方法:用于判断当前请求的参数是否支持指定的视图解析器。
在实现此方法时,可以根据请求的参数值和已配置的视图解析器进行判断。
【4】实战应用示例以下是一个实战中的应用示例,演示如何使用AddArgumentResolvers 方法为不同的请求参数添加对应的视图解析器:```java@Configurationpublic class WebMVCConfig implements WebMVCConfigurer { @Overridepublic void addArgumentResolvers(ArgumentResolverRegistry registry) {// 注册一个根据请求参数名称解析视图的解析器registry.addArgumentResolver(new RequestParamArgumentResolver());// 注册一个根据请求参数值解析视图的解析器registry.addArgumentResolver(new RequestValueArgumentResolver());}}```【5】总结WebMVCConfigurer的addArgumentResolvers方法为企业级Web应用提供了强大的视图解析功能,可以根据请求的参数值自动选择合适的视图解析器。
摘要:页面首次打开很慢,但别的页面如果没有访问过,去访问也会慢。
你也许认为它是在编译ASPX,或者加载一些东西。
不过我发现不是这样的。
用过的人都知道吧,页面首次打开很慢。
本来网站第一次启动就慢,但别的页面如果没有访问过,去访问也会慢。
好吧,你也许认为它是在编译ASPX,或者加载一些东西。
我也这样认为过。
不过我发现不是这样的。
1.bin目录里面你放多少它加载多少,如果放一些无效的DLL,比如在32位下面放一些纯64位的DLL,就会直接报错;2.aspx页面解析非常快,那么转成CS也是一瞬间,编译更不用说,不应该是卡上2-5秒,1秒是可以接受的;今天搜索了一下,原来是这样的:.net程序第一次运行速度慢的问题原因是第一次运行需要验证数字签名。
当程序里面需要调用到一些Authenticode Signed的.NET Assembly的时候,它需要连接到外网来验证数字证书。
当服务器是无法连接到外网时,这个校验证书的过程需要等到timeout之后才会结束。
那么要做的就是不让它干这些坏事,总之我从来都不觉得它会老老实实的给你服务。
禁止证书的验证过程:1、在下面aspnet.config文件中加入下面内容:32位系统:C:\Windows\\Framework\v2.0.50727\aspnet.config 64位系统:C:\Windows\\Framework64\v2.0.50727\aspnet.config有4.0,甚至4.5的自己多改几个地方,如果是64位的系统,可能需要以管理员身份打开编辑器,再打开这个文件,否则无法保存的。
[xhtml]查看源代码复制1.<?xml version="1.0"encoding="utf-8"?>2.<configuration>3.<runtime>4.<generatePublisherEvidence enabled="false"/>5.</runtime>6.</configuration>对"Network Service"帐号下运行的所有程序禁止证书检查不会的话就忽略吧。
与Core中页⾯传值的⼏种形式和⽅法简介在开发 以及 Core过程中主要使⽤的页⾯传值的⽅法有以下⼏种:Request.QueryString[] Request.Form[] Session,Cookie Cache Application, Server.TransferDatabase HttpContext的Item属性 Files DataBase等1、Request.QueryString代码如下:protected void getQueryString_Click(object sender, EventArgs e){string QueStr = Request.QueryString["name"];Response.Write(QueStr);}分析:Request.QueryString 获取http查询字符床变量集合。
有两重载即Request.QueryString[string name]和Request.QueryString[int index]两种其中Request.QueryString主要获取url中的“?”之后的参数,例如url: a.aspx?name="nueq",则 Reuqest.QueryString["name"]的值为“neuq”。
2、Request.Form代码如下:protected void getQueryString_Click(object sender, EventArgs e){string strQueForm = Request.Form["TextBox1"];Response.Write(strQueForm);}分析:Request.Form获取窗体变量集合有两重载(⼀般Form表单post提交⾄后台的数据)。
即Request.Form[string name] 和Request.Form[int index],获取表单指定名称的参数值。
MVC2.0系列文章-添加操作此篇文章,我们将实现MVC2.0的添加操作,主要包括Model的创建、View的Edit操作和Control 的Create操作。
创建数据模型Model数据模型主要包括数据信息、验证规则以及业务逻辑。
创建Model的方式有多种,可以使用微软的 Entity Data Model,也可以使用第三方工具生成实体对象,对于比较简单的实体,我们可以手工添加,此处就是手动敲上去的。
分析:此处定义了新闻实体对象的的一些属性,在每个Property上都存在一些注解,比如字段Title上RequiredAttribute,表明Title栏位是必填字段,如果不填写会显示错误信息”请输入标题!” DataTypeAttribute属性表明此字段的数据类型为文本类型,它是个枚举类型集合,如下: Member DescriptionnameCustom Represents a custom data type.DateTime Represents an instant in time, expressed as a date and time of day. Date Represents a date value.Time Represents a time value.Duration Represents a continuous time during which an object exists. PhoneNumber Represents a phone number value.Currency Represents a currency value.Text Represents text that is displayed.Html Represents an HTML file.MultilineText Represents multi-line text.EmailAddress Represents an e-mail address.Password Represent a password value.Url Represents a URL value.ImageUrl Represents a URL to an image.这些类型,可以分别试试,看看最终效果什么样子的。
DisplayNameAttribute属性表明了此字段要文字说明。
创建View视图MVC提供了生成View的向导工具,很方便的,如下图流程步骤:我们在View文件夹下,新建一个新文件夹,命名为News右击News文件夹,选择Add->Add View功能菜单,出现如下界面:在View name栏位,我可以给此视图修改名称,比如AddNews,选中Create a strongly-typed view 栏位,选择刚才定义的实体类Model,并选择View content栏位为Create操作。
其他栏位默认值就OK最终效果如下图所示:单击【Add】按钮,即可添加AddNews.aspx视图成功。
此文件的核心代码如下所示:<asp:Content ID="Content2"ContentPlaceHolderID="MainContent"runat="server"> <h2>添¬¨ª加¨®新?闻?</h2><% using (Html.BeginForm()){%><%: Html.ValidationSummary(true) %><fieldset><legend>新?闻?</legend><div class="editor-label"><%: belFor(model => model.Title) %></div><div class="editor-field"><%: Html.TextBoxFor(model => model.Title) %><%: Html.ValidationMessageFor(model => model.Title) %></div><div class="editor-label"><%: belFor(model => model.CreateTime) %></div><div class="editor-field"><%: Html.TextBoxFor(model => model.CreateTime, new { @class = "date" })%> <%: Html.ValidationMessageFor(model => model.CreateTime) %></div><div class="editor-label"><%: belFor(model => model.Content) %></div><div class="editor-field"><%: Html.EditorFor(model => model.Content) %><%: Html.ValidationMessageFor(model => model.Content) %></div><p><input type="submit"value="添¬¨ª加¨®"/></p></fieldset><% } %><div><%: Html.ActionLink("Back to List", "Index","Home") %></div></asp:Content>分析:在日期文本框中,新增加属性new { @class = "date" }),此Class属性是为了稍后的日历控件的显示。
要使日期文本框显示日期控件,可以使用Jquery UI,方法是:1/、Jquery UI官方网站下载最新的 UI类库2、添加日历控件的CSS文件和JS文件到项目中,如下图3、在母版页面Site.Master中添加JS的引用,以及页面初始化时绑定日历控件到文本框,代码如下:<link href="/Content/jquery.ui.all.css"rel="stylesheet"type="text/css"/><script src="/Scripts/jquery-1.4.1.min.js"type="text/javascript"></script><script src="/Scripts/jquery-ui-1.8.2.custom.min.js"type="text/javascript"></script><script type="text/javascript">$(document).ready(function () {$("input:text.date").datepicker({dateFormat: "yy-mm-dd"});});</script>到此,日历栏位的文本框就可以显示日历控件了,稍后看效果图。
创建Controller文件在Controllers文件夹下,新增News文件夹;单击右键,选择Add->Controller,显示如下界面重命名Controller Name栏位为NewsController,同时选择下方的复选框,最终效果如下图:单击【Add】按钮,自动产生Controller中的一些方法,这时候对Controller中的方法做一些修改,即可完成添加新闻页面初始化的方法,以及添加新闻功能,代码如下:// GET: /News/Create//完成页面初始化public ActionResult AddNews(){return View();}//// POST: /News/Create//完成添加按钮事件[HttpPost]public ActionResult AddNews(THelperMVC.Models.News.AddNewsModel news){if (ModelState.IsValid){newsService.AddNews();return RedirectToAction("index", "Home");}else{ModelState.AddModelError("", "请?输º?入¨?合?法¤¡§的Ì?信?息¡é!ê?");}return View(news);}至此,MVC的各个层次都已经创建完,让我们看看最终的效果吧。
程序效果图。