mvc  model-view-controller

控制器:控制器类处理客户端向Web应用程序发出的请求,获取数据,并指定返回给客户端,用来显示处理结果的视图。

模型:模型类代表了应用程序的数据,这些数据通常具有一个数据验证逻辑,用来使得这些数据必须符合业务逻辑。

视图:视图类是web应用程序中用来生成并显示HTML格式的服务器端对客户端请求的响应结果的模板文件。

 

在controller中:return RedirectToAction("Index");需要[HttpPost]属性。这个标签标识当请求类型为Post方式的时候将会由这个方法进行请求的处理。

 

使用EF中的ModelBuilder API来定义字段精度。在相应的cs中追加引用:using System.Data.Entity.ModelConfiguration;

在MovieDBContext类中重载OnModelCreating方法,代码如下:

public class MovieDBContext: DbContext

{

  public DbSet<Movie> Movies{get; set;}

 

  protected override void OnModelCreating(ModelBuilder modelBuilder)

     {

    modelBuilder.Entity<Movie>().Property(p=>p.Price).HasPrecision(18,2);

  }

 

DRY原则:Don't Repeat Yourself.  在模型类中显式地追加一个验证规则,然后在整个应用程序中都是用这个验证规则。

 

如何追加验证规则?

打开cs文件,在追加引用:using System.ComponentModel.DataAnnotations;

验证规则:Required(必须输入),StringLength(输入字符长度),Range(输入范围)。例如:

public string Genre{get;set;}

[Required(ErrorMessage="必须输入票价")]

[Range(1,100,ErrorMessage="票价必须在1元到100元之间")]

public decimal Price{get; set;}

[StringLength(5, ErrorMessage="最多允许输入五个字符")]

在View中@Html.ValidationMessageFor(model=>model.Price)

 

MvcMusicStore

在典型的Web应用中,用户请求的URL地址通常映射到保存在网站中的文件上,例如请求/Products.aspx的时候很可能就是通过处理Products.aspx文件来完成任务。而ASP.Net MVC则是将这些URL地址映射到类的方法上,这些类被称为控制器,用来接收HTTP请求,处理用户的输入,获取或者保存数据,其中的处理方法称为Action,然后将回应发送到客户端,可能是显示了一个HTML的网页,下载一个文件,重定向到另外一个地址等等。

 

HttpUtility.HtmlEncode将字符串转化为HTML编码的字符串来处理用户的输入,防止用户的脚本注入攻击。

如果参数名是ID,id或Id。都可以用两种方式:1.Store/id=3   2.Store/3..其他参数只能用第一种。另外。。store这里不区分大小写。

 使用自定义的HtmlHelper截断文本内容

using System.Web.Mvc;

namespace MvcMusicStore.Helpers

{

  public static class HtmlHelpers

     {

    public static string Truncate(this HtmlHelper helper, string input, int length)

          {

       if(input.Length<=length)

      {

        return input;

        }

      else

      {

        return input.Substring(0, length)+"...";

      }

    }

  }

}

 

模型验证 DataAnnotations

Required 必须-表示这个属性是必须提供内容的字段

DisplayName 显示名-定义表单字段的提示名称

StringLength 字符串长度-定义字符串类型的属性的最大长度

Range 范围-为数字类型的属性提供最大值和最小值

Bind 绑定-列出在讲请求参数绑定到模型的时候,包含和不包含的字段

ScaffoldColumn 支架列-在编辑表单的时候,需要隐藏起来的字符