mvc

 导航属性。

http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html
自学MVC看这里——全网最全ASP.NET MVC 教程汇总

ASP.NET MVC 音乐商店 - 0 概览
http://www.cnblogs.com/haogj/archive/2011/11/08/2241710.html
MusicStore 项目的完整配套视频!

Asp.Net MVC 控制器
这篇教程探索了ASP.NET MVC控制器(controller)、控制器动作(controller action)和动作结果(action results)这几个主题。在读完本篇教程之后,你将会理解控制器如何控制访问者与ASP.NET MVC网站进行交互的方式。
控制器的名字必须含有Controller后缀.
阻止公共方法被调用
如果你需要在控制器中创建一个公共方法,但是你不想将这个方法发布为控制器动作,那么你可以通过使用[NonAction]特性来阻止该方法被外界调用。举个例子,代码清单2中的控制器含有一个叫做CompanySecrets()的公共方法,它使用[NonAction]特性进行了修饰。
Asp.Net MVC 路由
每个ASP.NET MVC应用程序都具有的一个重要功能,称作ASP.NET路由(ASP.NET Routing)。ASP.NET路由模块负责将即将到来的浏览器请求映射到特定的MVC控制器动作。学完这篇教程之后,你将会理解标准的路由表是如何将请求映射到控制器动作的。

1. 理解默认路由表

当你创建一个新的ASP.NET MVC应用程序时,应用程序已经被配置为使用ASP.NET路由。ASP.NET路由在两个地方设置。

第一点,在你的应用程序Web配置文件(Web.config文件)中启用ASP.NET路由。在配置文件中有四个节点与路由有关:sytem.web.httpModules节,system.web.httpHandlers节,system.webserver.modules节,以及system.webserver.handlers节。特别要小心不要删除了这些节点,因为没有它们路由将不能工作。

第二点,也是更为重要的一点,在应用程序的Global.asax文件中创建了一个路由表。Global.asax文件是一个特殊的文件,它包含了作用于ASP.NET应用程序生命周期事件的事件处理程序。路由表在Application Start事件期间创建。

实现IRouteConstraint接口来实现一个自定义路由。这是一个极其简单的接口,它只描述了一个方法:

bool Match(
     HttpContextBase httpContext,
     Route route,
     string parameterName,
     RouteValueDictionary values,
     RouteDirection routeDirection
 )

-----
代码清单2 - Global.asax

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using MvcApplication1.Constraints;

namespace MvcApplication1
 {

     public class MvcApplication : System.Web.HttpApplication
     {
         public static void RegisterRoutes(RouteCollection routes){
             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


             routes.MapRoute(
                 "Admin",
                 "Admin/{action}",
                 new {controller="Admin"},
                 new {isLocal=new LocalhostConstraint()}
             );

             //routes.MapRoute(
            //    "Default", // Route name
            //    "{controller}/{action}/{id}", // URL with parameters
//    new { controller = "Home", action = "Index", id = "" }  //Parameter defaults
            //);
        }

         protected void Application_Start(){
             RegisterRoutes(RouteTable.Routes);
         }
     }
 }
-----
Asp.Net MVC 视图(概述) - Part.1
mvc最接近页面的东西是称为视图(View)的东西。
创建一个视图

你可以在解决方案浏览器中的文件夹上点击右键,并且选择菜单项“Add(添加)”、“New Item(新建项)”(如图1)。选择“MVC View Page”模板将标准视图添加到你的项目中。
---之外-----------
小窥.NET MVC 自带的两种视图引擎——Razor、Aspx 

MVC自带的视图引擎是有两种的,一种是Razor,会以cshtml后缀的文件作为视图文件;另一种是ASPX,以aspx后缀的文件作为视图文件。一开始,对这两个视图引擎存在不少的疑惑,然后经过一番百度与实践操作后发现:前者是一个新型的视图引擎Razor,它具有更智能的语法,
并以@{}取代以往的<% %>,
使语句变得更加简洁,而且是能被测试的;而后者则是我们以往一直使用的ASPX,它的一个区别与Razor的优点是它能够拖拉控件,使用方便。


mvc4.0

ADO.NET EF:[1]创建实体数据模型 a.edmx(添加现有项,ado.net实体数据模型)
模型中包括的数据库对象包括 表、视图、存储过程和函数。
数据库有更新,删掉再添加最方便。

------之外-----

 

 


---Asp.Net MVC(理解模型、视图和控制器) - Part.2
理解控制器Controller
------

------------
理解视图View
-----------
由HomeController类暴露出的两个控制器动作,Index()和About(),都返回了一个视图。视图含有将会发送给浏览器HTML标记和内容。当使用ASP.NET MVC应用程序时,一个视图等同于一个页面。

你必须在正确的位置创建你的视图。HomeController.Index()动作返回了一个位于以下路径的视图:

\Views\Home\Index.aspx

HomeController.About()动作返回一个位于以下路径的视图:

\Views\Home\About.aspx

一般而言,如果你想为一个控制器动作返回一个视图,那么你需要在Views文件夹下创建一个子文件夹,这个文件夹与你的控制器同名。在子文件夹下,你必须创建一个.aspx文件,它的名字与控制器动作相同。
--------------------
Net)编写脚本。你使用脚本显示动态的内容,例如数据库数据。

6. 理解模型Model
------------
MVC的模型包含了你应用程序中的所有逻辑,这些逻辑没有包含在视图或者控制器中。模型应该包含你的应用程序中的所有业务逻辑和数据库访问逻辑。
视图应该仅包含与生成用户界面有关的逻辑。控制器应该仅仅只包含最少量的逻辑,用于返回正确的视图或者将用户重定向到另一个动作。任何其他的事情都应该包含在模型中。

通常,你应该竭尽全力创建一个丰富的模型以及一个瘦小的控制器。你的控制器方法应该只包含几行代码。如果一个控制器动作变得太丰富,那么你应该考虑将这些逻辑抽取出来放置到Models文件夹的新类中。

----------
Model封装了你的应用数据、应用流程和业务逻辑。
◆View从Model获取数据并格式化数据以进行显示。
◆Controller控制程序流程,接收输入,并把它们传递给Model和View。
ASP.NET MVC (一)——深入理解ASP.NET MVC

 

ASP.NET MVC (二)——ASP.NET MVC 数据传递
ASP.NET vs MVC vs WebForms

许多ASP.NET开发人员开始接触MVC认为MVC与ASP.NET完全没有关系,是一个全新的Web开发,事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系,所以可以称之为ASP.NET MVC。

我们可将原来的ASP.NET称为 ASP.NET Webforms,新的MVC 称为ASP.NET MVC.
在Web应用程序中从两方面来定义性能:

1. 响应时间: 服务器响应请求的耗时

2. 带宽消耗: 同时可传输多少数据。
Asp.Net MVC 由Model,View,Controller三部分组成。Controller中包含后台代码逻辑,View是ASPX,如纯HTML代码,Model是中间层。通过上图可获得这三部分的关系。
所以会发现MVC的改变有两点,View变成简单的HTML,后台代码移到简单的.NET类中,称为控制器。

以下是ASP.NET MVC 请求流的通用步骤:

Step 1:首先获取控制器。

Step 2:依赖行为控制器创建Model对象,Model通过转换调用数据访问层。

Step 3:数据填充Model之后,传递到View 显示层,实现显示的目的。
首先我们从Controller 控制器开始,因为Controller是MVC体系架构的核心部分。
为了我们能够更好的理解Controller,我们首先需要理解Controller中涉及的专业术语:用户交互逻辑。
2. Action(行为) 方法是什么?

Action 方法 简单的来说就是一个Controller内置的public类型的方法,能够接收并处理用户的请求,上例中,GetString 方法返回了一个字符串类型的响应。
View部分
Controller是处理用户请求,并做出响应,通常情况下响应都是以显示在浏览器中,使用HTML代码,浏览器才可识别。HTML有图像,文本,输入控件等。通常称为用户界面的设计即UI层,在ASP.net MVC称为View。


?Step1 –创建新的Action 方法

在TestController中添加新的Action 方法,如下:

   1:  public ActionResult GetView()
   2:  {
   3:     return View("MyView");
   4:  }
打开MyView.cshtml 文件,并添加以下内容:
@{Layout = null;}
<!DOCTYPE html>
<html><head><meta name="viewport" content="width=device-width" />
<title>MyView</title>
</head><body>Welcome to MVC 5 Step by Step learning
</body></html>

实验二:Q&A

1. 为什么View会放在Test的文件夹中?

View是与放置在特定目录下的Controller相关。这个特定文件夹是以”ControllerName”命名的,并且放在View文件夹内

2. 在多个控制器中无法重用View吗?

当然可以,我们需要在将这些文件放在特定的Shared文件夹中。将View 放在Shared文件夹中所有的Controller都可用。

3. 单个Action 方法中可引用多个View吗?

可以,ASP.NET MVC的view和Controller不是严格的匹配的,一个Action Method可以引用多个view,而一个View也可以被一个Action方法使用如下代码所示:

   1:  public ActionResult GetView()
   2:  {
   3:      if(Some_Condition_Is_Matching)
   4:      {
   5:         return View("MyView");//页面叫myView
   6:      }
   7:      else
   8:      {
   9:         return View("YourView");
  10:      }
  11:  }


http://www.cnblogs.com/powertoolsteam/p/MVC_two.html
ASP.NET MVC (二)——ASP.NET MVC 数据传递

Controller与 View之间的值传递
View将从从Controller获得Model中的数据。

Model是MVC中 表示业务数据的层。
ViewBag的使用

ViewBag可以称为ViewData的一块关于语法的辅助的糖果,ViewBag使用C# 4.0的动态特征,使得ViewData也具有动态特性。
ViewData与ViewBag对比:
ViewData       ViewBag
它是Key/Value字典集合.它是dynamic类型对像
从Asp.net MVC 1 就有了. ASP.NET MVC3 才有
基于Asp.net 3.5 framework.基于Asp.net 4.0与.net framework
ViewData比ViewBag快.ViewBag比ViewData慢
在ViewPage中查询数据时需要转换合适的类型.在ViewPage中查询数据时不需要类型转换
有一些类型转换代码.可读性更好
 
数据传递是MVC知识的重要组成部分,深入理解了这部分知识,能够帮助我们更好的进行MVC的开发。同时,请记得借助开发工具来助力开发过程,使用 ComponentOne Studio ASP.NET MVC 这款轻量级控件,工作效率大大提高的同时,工作量也会大大减少。
 
ASP.NET MVC (三)——ASP.Net MVC 数据处理
http://www.cnblogs.com/powertoolsteam/p/MVC_three.html
数据访问层

在实际开发中,如果一个项目不包含任何数据库,那么这个项目是不完整的,我们在一二节实例中未涉及数据库,在本节开始,实验8中讲解一个关于数据库和数据库层的实例。

本节将使用SQL Server和EF(Entity Framework)创建相关的数据库及数据库访问层。

简述实体框架(EF)
EF是一种ORM工具,ORM表示对象关联映射。

在RDMS中,对象称为表格和列对象,而在.net中(面向对象)称为类,对象以及属性。

任何数据驱动的应用实现的方式有两种:

1. 通过代码与数据库关联(称为数据访问层或数据逻辑层)

2. 通过编写代码将数据库数据映射到面向对象数据,或反向操作。

ORM是一种能够自动完成这两种方式的工具。EF是微软的ORM工具。
什么是代码优先的方法?

EF提供了三种方式来实现项目:

l 数据库优先方法——创建数据库,包含表,列以及表之间的关系等,EF会根据数据库生成相应的Model类(业务实体)及数据访问层代码。

l 模型优先方法——模型优先指模型类及模型之间的关系是由Model设计人员在VS中手动生成和设计的,EF将模型生成数据访问层和数据库。

l 代码优先方法——代码优先指手动创建POCO类。这些类之间的关系使用代码定义。当应用程序首次执行时,EF将在数据库服务器中自动生成数据访问层以及相应的数据库。
什么是POCO类?

POCO即Plain Old CLR对象,POCO类就是已经创建的简单.Net类。在上两节的实例中,Employee类就是一个简单的POCO类。
ASP.NET MVC (四)——用户授权认证问题
http://www.cnblogs.com/powertoolsteam/p/MVC_four.html

 

---|||||||||||||||||||||||||||||||||---------------------
MVC 3 数据验证 Model Validation 详解
http://www.cnblogs.com/jiagoushi/archive/2013/01/25/2876725.html

看到了实际效果,我们来逐个分析一下每个验证Attribute的实现方式 极其注意方式。

Required 必填项 表示的是这个字段值是必填的。

[Required(AllowEmptyStrings = false, ErrorMessage = "用户名不能为空")]

Display  字段显示的名称  表示该字段显示的是Name值,而不是字段本身的名称

 [Display(Name="password")]

StringLength 表示的是验证字符串的长度。我们可以设置最小长度和最大长度,如果不在这个范围内,则会提示错误信息

[StringLength(20, MinimumLength = 6, ErrorMessage = "用户名不能大于{2} 且要小于{1}")]

其中我们看到ErrorMessage中有占位符存在,其实这个占位符很容易理解,就是{0}表示的是字段本身的名称,{1}表示它前面的第一个参数,{2}表示它前面的第二个参数。

ScaffoldColumn  表示的是是否采用MVC框架来处理 设置为true表示采用MVC框架来处理,如果设置为false,则该字段不会在View层显示,里面定义的验证也不会生效。

 [ScaffoldColumn(false)]

Remote  表示的是进行远端验证,这个相当于我们采用ajax方式来异步的请求服务器,并返回信息。最常用的就是验证用户名是否重复。下面这个验证是异步调用ValidateController下面的User Action 并且返回结果为json值。

  [Remote("User", "Validate", HttpMethod = "post", ErrorMessage = "用户名已经存在")]

DataType 表示的是字段的数据类型 这个会影响到字段在View层的显示效果。如果设置为password,则输入时会用*替换。

 [DataType(DataType.Password)]

RegularExpression 正则表达式验证。正则表达式我曾经在我的一篇博客中有所介绍。正则表达式是验证字符串的利器,我们必须掌握的。前面是验证模式,后面是出错显示的错误信息。

使用正则表达式抓取博客园列表数据 

 [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9]+\.[A-Za-z]{2,4}", ErrorMessage = "{0}的格式不正确")]

Compare  比较两个字段值是否相同,这个如果我们采用js进行验证的话,最少需要三行,这还只是客户端验证。那么在MVC中就比较容易实现了。

 [Compare("Email", ErrorMessage = "邮箱要相同")]

在Compare 验证中有一个地方需要注意,就是第一个参数,它是另一个字段的名称,我们一定要注意大小写正确,如果错误的话,验证就不会通过的。

Range 表示的大小数据的大小验证。这个Attribute可以验证int,double,decimal等数据类型的值的大小范围。 表示的是在10和100之间,包括10和100

 [Range(10, 100, ErrorMessage = "年龄不能大于{2} 不能小于{1}")]

ReadOnly 表示字段是否只读。 这个在View层我有时测试会没有执行。具体原因还未知。

DisplayFormat 表示的数据显示的样式。其实这个不属于数据验证特性,而应该属于数据格式。如果要启用格式设置,第一个参数一定要设置为true,第二个就和我们toString()方法后面的参数一样。

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]

UiHint  告诉MVC 指定的模版。

HiddenInput 隐藏域显示

其实我个人是将数据验证的这些特性分为两类,一类是真正的进行验证,Required,Range,StringLength,Display,Remote,RegularExpression,Compare,Range。这些特性是真正会进行验证的Attribute。另外几个Display,ReadOnly,DataType,DisplayFormat,ScaffoldColumn等和字段的显示有关,没有真正的和服务器端进行验证。

我们可以使用MVC提供的各种验证特性,那么我们是否可以自己来定义自定义特性验证呢。MVC有着巨大的可扩展性,我们也可以自己进行扩展,有两种扩展方式,一种就是可以重复使用的和MVC框架中验证,只要继承自ValidationAttribute 就可以实现重复使用的验证特性,另一种就是内包含的模式,它是只验证特定的Model,继承自IValidatableObject可以实现字包含的验证。

--|||||||||||||||||||||||||||||||||-------------
MVC HtmlHelper用法大全
HtmlHelper用来在视图中呈现 HTML 控件。

以下列表显示了当前可用的一些 HTML 帮助器。 本主题演示所列出的带有星号 (*) 的帮助器。
?ActionLink - 链接到操作方法。
?BeginForm * - 标记窗体的开头并链接到呈现该窗体的操作方法。
?CheckBox * - 呈现复选框。
?DropDownList * - 呈现下拉列表。
?Hidden - 在窗体中嵌入未呈现的信息以供用户查看。
?ListBox * - 呈现列表框。
?Password - 呈现用于输入密码的文本框。
?RadioButton * - 呈现单选按钮。
?TextArea - 呈现文本区域(多行文本框)。
?TextBox * - 呈现文本框
--|||||||||||||||||||||||||||||||||--
http://www.cnblogs.com/jyan/archive/2012/07/23/2604529.html

--------@RenderBody、@RenderPage、@RenderSection用法-----

在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout。cshtml)放在了共享视图文件夹中。模板页:@RenderBody()占位符;局部页面:@RenderPage();模板页预设区域:@RenderSection("")
--||||MVC HTML辅助类常用方法记录|||||||||||||||--
 (1)@Html.DisplayNameFor(model => model.Title)是显示列名,

(2)@Html.DisplayFor(modelItem => item.Title)是显示列的内容

(3)@Html.ActionLink("Create New", "Create")是超链接,跳转到model中的create页面,引用的是controller中create方法;

(4)@Html.ActionLink("Edit", "Edit", new { id=item.ID })编辑页面;

(5)@using (Html.BeginForm()) {   @Html.ValidationSummary(true)}用于客户端验证,其Html.BeginForm()表示在本页显示

(6)<div class="editor-label">
            @Html.LabelFor(model => model.Time)标签(lqy备注:其实是框,display显示文本)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Time)编辑框
            @Html.ValidationMessageFor(model => model.Time)验证合法性错误显示
        </div>
7.@Truncate 截断  @Truncate(item.Artist.Name, 25)
8.@Html.BeginForm、@Html.ValidationSummary、@Html.HiddenFor、@Html.LabelFor、@Html.EditorFor、@Html.ValidationMessageFor、@Html.TextBoxFor等
--|||||-----
通过为模型类增加数据描述的 DataAnnotations ,我们可以容易地为应用程序增加验证的功能。DataAnnotations  允许我们描述希望应用在模型属性上的验证规则,ASP.NET MVC 将会使用这些 DataAnnotations ,然后将适当的验证信息返回给用户。

增加验证

我们将会使用下列的 DataAnnotations
?Required 必须 – 表示这个属性是必须提供内容的字段
?DisplayName 显示名 – 定义表单字段的提示名称
?StringLength 字符串长度 – 定义字符串类型的属性的最大长度
?Range 范围 – 为数字类型的属性提供最大值和最小值
?Bind 绑定 – 列出在将请求参数绑定到模型的时候,包含和不包含的字段
?ScaffoldColumn 支架列 - 在编辑表单的时候,需要隐藏起来的的字符
---virtual当类数据类型 延迟加载 EF-Code First 使用延迟加载---------------
----DbSet(TEntity) 类 (System.Data.Entity)---
--ViewData ViewBag 比较--
--  MVC 控制器向View传值的三种方法 (类似于键值对 cookie从controler传值到页面)--
1.你能把一个对象作为View方法的参数传递给视图.
2.用ViewBag(视图包)传递数据,View  Bag 允许在一个动态的对象上定义任意属性,并在视图中访问它.这个动态的对象可以通过Controller.ViewBag属性访问它.
3.使用View Data传递数据,Controller类的ViewData属性进行访问的.这个方法,在视图中需要对对象进行转换.
AcceptVerbs("Get")/AcceptVerbs("Post")、 [HttpPost]
----------------------

MVC一样可以用iframe,用Partial View也可以
用MVC,同一模块可采用加载局部也等一系列方法,如:RenderPage、PartialView、include、iframe、frameset、RenderAction(Action返回PartialView)…
在.NET MVC下不用iframe实现局部加载html  http://www.tuicool.com/articles/iiAnAj

 


------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值