数往知来 ASP.NET MVC HtmlHelper、MVC快速增删改查 Cache MVC3客户端验证 MVC隐式异步提交 <二十八>

一.HtmlHelper、MVC快速增删改查

MVC

在MVC里面请求首先到控制器--》然后

-->数据库数据放在APP_DATE文件夹里,

--》js、css文件放在content文件夹里

--》控制器放在Controllers里,控制器要以controller结尾

控制器下面的所有方法都称为action

2)webform跟 aspnet MVC:区别请求的地址不一样了

MVC请求的是控制器下面的action

webform:aspx页面或者是一般处理程序

--》a标签

<%:html.ActionLink(显示的文本,action,控制器,参数,属性)  %>

<%:Html.ActionLink("首页","/home/index",new {name="shit"},new {id="fuck",style="color:red",@class="add"}) %>

  <a class="add" href="/home/home/index?name=shit" id="fuck" style="color:red">首页</a>

-->文本框    <%:html.TextBox("id") %>

生成一个html文本框标签并且id、name的值都是这里赋的“id”

-->radioButton

    <%:Html.RadioButton("sex",1,true) %>男

    <br />

    <%:Html.RadioButton("sex",2,true) %>女

<%:html.RadioButton(‘name‘,1,true)  %>

把‘name’设为一样的就是一组

-->下拉框

<%:Html.DropDownList("key")%>//前台代码

//view代码

         ViewData["city"] = new List<SelectListItem>(){

            new SelectListItem(){Selected=false, Text="北京", Value="1"},

            new SelectListItem(){ Selected=false, Value="2", Text="广东"},

            new SelectListItem(){Selected=false, Text="上海", Value="3" }

            };

后台要new一个ViewData["key"]=NEW LIST<>   ViewData的键要和前台的DropDownList("key")相同

3)扩展方法

如果直接返回string 那么前台页用<%: %>显示渲染出来的就是经过encod编码之后的,<>都会被编码成 > <,这样的好处是可以防XSS跨站脚本攻击

那么我们要返回一个html字符串就会被原样的输出,解决方案:可以返回MVCHtmlString或HtmlString

三要素

--》静态类、静态方法、this

    //扩展方法的三大要素

    //静态 类、静态方法、this

public static class MyHelperMethod

    {

        /// <summary>

        /// 没有解决=  :编码的问题的扩张方法

        /// 直接返回的话前台页用<%:html.... %>的时候:会对返回的字符进行编码,会把<>分别编译成>和<我们返回的html代码就会被浏览器渲染出来

        /// 

        /// </summary>

        /// <param name="helper"></param>

        /// <param name="str"></param>

        /// <returns></returns>

        public static string GetMyHtml(this HtmlHelper helper, string str)

        {

            return string.Format("<span>{0}</span>", str);//

        }

        /// <summary>

        /// 返回mvchtmlstring解决对:编码的问题

        /// </summary>

        /// <param name="helper"></param>

        /// <param name="str"></param>

        /// <returns></returns>

        public static MvcHtmlString GetMyMvcStrHtml(this HtmlHelper helper, string str)

        {

            //return string.Format("<span>{0}</span>", str);//

            return MvcHtmlString.Create(string.Format("<span>{0}</span>", str));

        }

        /// <summary>

        /// 返回mvchtmlstring解决对:编码的问题

        /// </summary>

        /// <param name="helper"></param>

        /// <param name="str"></param>

        /// <returns></returns>

        public static HtmlString GetMyHtmlLable(this HtmlHelper helper, string str)

        {

            //return string.Format("<span>{0}</span>", str);//

            return  new HtmlString(string.Format("<span>{0}</span>", str));

        }

Cache

一、Cache    缓存

首先缓存是改变网站性能的第一个手段,它是一种以空间换时间的技术,它是共享的,存在服务端的内存里,

缓存分为三种:

--》页面缓存

把整个页面都保存在缓存里面,一般用于一些访问量比较大、页面上的数据也不是经常更新变换的,比如说首页、一些新闻页面,视频页面,像一些CUD页面就没有必要用缓存了。

--》数据源缓存

数据源缓存针对于ObjectDataSuorce,  如果设定了这个控件的EnableCache=true,那么绑定在这个ObjectDataSuorce上的数据就会被保存到缓存里,在缓存失效时间里不会去调数据库

数据源缓存不灵活,

--》自定义缓存

我们自己通过Cache["key"]="dsdas"这种方式来定义的,

那么缓存的好处就是提高用户体验,提高网站的性能,同时缓存也有缺点,一个是占用服务端资源,一个是会产生“脏数据”,当我们把数据保存在缓存里面的时候,在缓存失效时间内如果数据库的数据发生了改变,那么这时候用户在访问服务端就是从缓存里取数据就是没有更新的旧数据,解决这个问题的方法就是建立缓存依赖,缓存依赖又分为两种

1)文件缓存依赖

文件缓存依赖是通过CacheDependency cDep = new CacheDependency(filePath);这个类来实现的

它会时刻的监视这个文件,如果文件一修改那么就让绑定的那个缓存过期

2)数据库缓存依赖

数据库缓存依赖其内部是通过触发器来实现的,首先它会创建一个表,这个表里有三个字段,一个字段保存缓存的那张表的名字,一个是count一旦这张表进行了增删改操作count就+1,那么这个触发器在缓存的这张表进行增删改的时候触发,在这个触发器里调用了一个存储过程,这个存储过程就是对count字段自加1,那么在设置了pollTime="15000"这个以后,每隔这个时间段就会检查这张表里的count字段,看这个字段有没有发生改变,已发生改变就证明那张缓存的表发生了增删改操作,那么这个缓存就会立马失效,这种缓存依赖效率很低

数据库缓存依赖需要在数据库注册表

1.使用C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727中的aspnet_regsql.exe:

注册:aspnet_regsql -S . -E -ed -d 数据库名 -et -t 表名

删除:aspnet_regsql -S . -E -d 数据库名 -dt -t 表名

取消数据库缓存依赖: aspnet_regsql -S . -E -dd 数据库名

数据库名 列出已注册表:aspnet_regsql -S . -E -d 数据库名 -lt

2.配置web.config

<system.web>

<caching>

<sqlCacheDependency enabled="true">

<databases>

<add name="GSSMS" connectionStringName="conStr2" pollTime="15000"/>

</databases>

</sqlCacheDependency>

</caching>

3.数据库依赖对象

SqlCacheDependency cDep =

  new SqlCacheDependency("GSSMS", "Students");

二、缓存的运行原理

浏览器发一个请求过来,当走到请求管道的第6个事件的时候就会获取以前处理过的缓存处理结果,看下这个请求的数据页面有没有被缓存,如果以前缓存了,那么在第7个事件获取缓存完毕之后就会立马返回,不会再处理请求了

MVC3客户端验证

MVC客户端验证

      @*如果使用的是mvc2 一定要再前端启动客户端校验*@

            @{ Html.EnableClientValidation(); }

要使用客户端验证,必须引入JS脚本支持

MicrosoftAjax.js

MicrosoftMvcValidation.js

添加语句

<% Html.EnableClientValidation(); %>(MVC3中默认开启)

.NET 框架中的System.ComponentModel.DataAnnotations命名空间包括了众多可为你所用的内置验证特性,介绍用的最多的其中的四个:[Required], [StringLength], [Range], 和

[RegularExpression]。

定义自己的定制验证特性,然后应用它们。你可以通过继承自System.ComponentModel.DataAnnotations命名空间中 的ValidationAttribute基类,定义完全定制的特

性。

--》给需要验证的对应的实体的属性加上特性

----------------------------实体类

[StringLength(10,ErrorMessage = "*最大长度是10")]//字符串的长度的校验

        [Required(ErrorMessage = "*哥这是必填项....")]//必填的特性

        public string TName { get; set; }

        [RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",ErrorMessage = "*爷,得输入一个邮箱,知道邮箱吗?")]//正则表达的校验

        public string Mail { get; set; }

        //数字范围校验

        [Range(10,100,ErrorMessage = "只能是10到100才行!")]

        public int Age { get; set; }

--------------------------------前端

@using (Html.BeginForm()) {

        @Html.ValidationSummary(true)

        <fieldset>

            <legend>UserInfo</legend>

            <div class="editor-label">

                @Html.LabelFor(model => model.Name)

            </div>

            <div class="editor-field">

                @Html.EditorFor(model => model.Name)

                @Html.ValidationMessageFor(model => model.Name)

            </div>

            <div class="editor-label">

                @Html.LabelFor(model => model.Emial)

            </div>

            <div class="editor-field">

                @Html.EditorFor(model => model.Emial)

                @Html.ValidationMessageFor(model => model.Emial)

            </div>

            <p>

                <input type="submit" value="Create" />

            </p>

        </fieldset>

---》改变错误提示文字的样式

生成网页之后,右键查看网页源代码,找到显示错误提示信息的span标签---可以看到这个用来显示提示信息的span标签应用了一个类样式field-validation-valid,那么我们就可以在css添

加这个类样式,改变它的样式了

                <input class="text-box single-line" data-val="true" data-val-length="爷,最多只能输入10个" data-val-length-max="10" data-val-required="*哥,这是必填的

!!" id="Name" name="Name" type="text" value="" />                <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>

MVC隐式异步提交

--》引用相应的Javascript文件

<script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>

隐式异步提交很好的实现了js和html的分离

     <form action="/Ajax/GetDate" method="post" data-ajax="true" data-ajax-confirm="大爷,看好了哦!" data-ajax-method="post" data-ajax-mode="replace" data-ajax-

update="#showTime" data-ajax-success="ShowMsg">

        <input type="submit" name="name" value="click me" />

        </form>

        <div id="showTime">

        </div>

Ajax  Option 对应

AjaxOptionsHTML attribute

Confirm        data-ajax-confirm

HttpMethoddata-ajax-method

InsertionModedata-ajax-mode *

LoadingElementDurationdata-ajax-loading-duration **

LoadingElementIddata-ajax-loading

OnBegindata-ajax-begin

OnCompletedata-ajax-complete

OnFailuredata-ajax-failure

OnSuccessdata-ajax-success

UpdateTargetIddata-ajax-update

Urldata-ajax-url

时间: 2024-10-03 09:48:56

数往知来 ASP.NET MVC HtmlHelper、MVC快速增删改查 Cache MVC3客户端验证 MVC隐式异步提交 <二十八>的相关文章

使用HttpClient对ASP.NET Web API服务实现增删改查

本篇体验使用HttpClient对ASP.NET Web API服务实现增删改查. 创建ASP.NET Web API项目 新建项目,选择"ASP.NET MVC 4 Web应用程序". 选择"Web API". 在Models文件夹下创建Product类. public class Product { public int Id { get; set; } public string Name { get; set; } public string Categor

asp.net中利用JSON进行增删改查中运用到的方法

//asp.net中 利用JSON进行操作, //增加: //当点击"增加链接的时候",弹出增加信息窗口,然后,在窗体中输入完整信息,点击提交按钮. //这里我们需要考虑这些:我会进行异步提交,使用jquery中的方法,$.post("网页名",JSON,callback); //JSON的写法:{"name":name,"id":id},那我们对其进行假设,比方说,表单中的textbox很多,需要我们填写的信息 //也很多,

【实战问题】【11】增删改查在SQLServer客户端都是正常的。但在程序里用mybatis的时候,新增会失败

前言: 我的情况和参考博客里的是一样的,所以此处仅做备份. 增删改查在SQLServer客户端都是正常的.但是在程序里用mybatis的时候,只有删改查是正常的,新增会失败.报错:17023 不支持的特性 正文: 检查jar包 oracle的jdbc驱动有很多版本,jdk1.5的驱动是classes12.jar,而jdk1.6(也就是官方所说的6.0)的驱动就是ojdbc6. 根据自己的情况选择合适的jar包,且不要把两个jar包都放进去 参考博客: myBatis+oracle11g inse

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查

在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的代码已经给出,里面包含了增删改,大家可以下载下来看下.这讲主要是,制作漂亮的工具栏,虽然easyui的datagrid已经自带可以设置工具栏,我们还是要提取出来,为以后权限控制做更好的准备. 前端代码没有逻辑结果,这也许是我写代码以来写得最轻松的,但也是最繁琐的,因为美工我不是强项,每一次调整都非常的困难,最后我把他调成了这样了: 看得过去的鼓掌一下.样式已经包含在附加代码中了. 大家只要加入以下HTML代码到index上就可以

MVC操作SQL数据库增删改查

控制器代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication1.Models; namespace MvcApplication1.Controllers { public class HomeController : Controller { // // GET: /Home/ publi

关于MVC工厂模式的增删改查sql存储过程

这里MVC中用到了反射,工厂,泛型,接口 在搭建框架的时候,除了MVC的三层以外,还有泛型的接口层和工厂层 下面是dal层调用sql存储过程,增删改查,dal层继承了接口层,实现了接口层里面的方法 1 namespace DAL 2 { 3 public class DalHouse : IHouse 4 { 5 public int Add(HouseInfo m) 6 { 7 string sql = "pro_add"; 8 SqlParameter eid = new SqlP

ASP.NET WebAPI 项目示例(增删改查)

1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台. 可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟知的WebForm项目,Windows窗体项目,控制台应用程序等. WebApi类型项目的最大优势就是,开发者再也不用担心客户端和服务器之间传输的数据的序列化

ASP.NET C# 连接 Oracle数据库增删改查,事务

一.知识介绍 ①ASP.NET 使用的是MVC模式,开发工具Visual studio ,语言C# ②Oracle是比较重型的数据库,这里主要介绍连接数据库,对数据进行具体的使用 ③Visual Studio连接数据库都是需要dll文件,方法相似. 二.步骤 ①新建一个ASP项目 ②右击项目或引用,管理Nuget程序包.搜索Oracle,下载Oracle的dll依赖 ③由于数据库的增删改查常用,放在一个方法中.新建了类库,把方法放入类库中,在项目中需添加引用. 1 using Oracle.Da

前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查

AngularJS中的$resource服务相比$http服务更适合与RESTful服务进行交互.本篇后端使用ASP.NET Web API, 前端使用$resource,实现增删改查. 领域和上下文 首先领域先行. public class StudentVm { [Key] public int Id { get; set; } public string Name { get; set; } public string Age { get; set; } } 上下文. public cla