Razor视图引擎布局 Razor视图引擎的基本概念与法语 SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射 binary 和 varbinary datetime 和 smalldatetime float 和 real

时间:2023-03-08 21:10:11
Razor视图引擎布局  Razor视图引擎的基本概念与法语  SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射 binary 和 varbinary  datetime 和 smalldatetime  float 和 real

Razor视图引擎布局

  • 不需要像过去aspx一样,使用.Master文件,而是统一使用.cshtml 或 .vbhtml文件。但文件名一般以 _开头,这样做文件不会当做View显示出来
  • 使用@RenderBody() 表示替换主体部分
  • 使用@RenderSection()可以自定义替换部分,

先布局页使用@RenderSection("Head", false) 定义一个要替换的区域,第一个参数表示替换区域名称,第二个参数为可选参数,false表示可以不必一定在页面中替换,true表不必须被替换

然后在内容页中使用

@section Head{
输出给头部的内容
}

引用布局页

方式一

  在内容页中直接使用Layout属性赋值布局布文件路径。

  

@{
Layout = Url.Content("~/Views/Shared/_Home.cshtml");
}

这种方式对以后的修改是比较麻烦的,不推荐使用

方式二

  在内容页的文件夹或父级文件夹添加_ViewStart.cshtml文件,然后在_ViewStart.cshtml文件中引用布局页(这很与aspx开发的web.config文件类似)

  当不同的文件夹内的如果要使用不同的布局时,可以在相应的文件夹下新建_ViewStart.cshtml文件

  当相同文件夹内的文件要使用不同布局时,只能在内容页里使用Layout属性了

使用布局页时,当此用js文件时,必须使用<script  src="" type="text/javascript"></script>结尾,而不能使用<script  src="" type="text/javascript" />

Razor视图引擎的基本概念与法语

Razor 视图引擎的特点:

  • 简洁、富于表现、流畅

    尽量减少页面代码的输入,实现快速流畅的编程工作

    不必明确为服务器代码标记起始与结束符,Razor 能智能判断,这样让页面看清洁,代码方便阅读

    aspx代码

    

1
2
3
4
5
6
7
8
9
<ul>
         <% foreach(var str in list ){
            %>
            <li>
            <%=str %>
            </li>
            <%
            } %>
      </ul>

   Razor代码

<ul>
@foreach (var str in list) {
<li>@str</li>
}
</ul>
  • 易于学习

       对于有过WEB开发经验的人来说, 能快速学会,就几个需要注意的点

  • 支持单元测试         

Razor的基本语法

  伟大的@标记

  @标记是Razor的根本,服务器端代码段都以@开始

  代码块

  

@{
    var i = 100;
    var str = "Holle world!";
    }

  HTML编码

  @输入都是经过编码的,如果不需要编码,需要使用@Html.Raw(str)

 代码与纯文本混合

  方式一、用<text>输出的文本内容</text>

@for (int i = 0; i < 10; i++)
{
<text>Holle world</text> 
}

  方式二、使用 @: 输出

@for (int i = 0; i < 10; i++)
{
 @:Holle world
}

表达式与文本混合

Holle @FirstName . @LastName .

EMAIL地址

  151279853@qq.com

  Razor可以自动认别Email地址,而不会做服务器代码执行

输出@符号

  当页面需要输出@符号时,连续两次@@ 这样输出,与C#的转义字符类似。

显示输出

  当@与前面的文本之间无空间时,需要使用()号输入,如 <text> Hello@(UserName) </text>(<text>标记其实是为了让Razor把<text>当HTML标签处理,但不输出)

服务器断注释

  @*

    This is server side

    This is server side

  *@

 Razor创建委托

  Razor创建委托是为以复用视图逻辑

1
2
3
4
5
@{
    Func<dynamic, object> b = @<strong>@item</strong>;
    }
@b("这样会给字体加粗!")

  内容中混合代码

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<ul>
 @foreach (var str in list)
 {
     <li>
    @if (isTrue)
    {
      @: isTrue 为 @isTrue  
    }
    else
    {
      @:(isTrue 为 @isTrue)
    }
     </li>
 }
</ul>

  多行内容混合代码

当多行内容在HTML闭合的标签中时,可以直接使用@

1
2
3
4
5
6
7
8
@if (isTrue)
{
    <p>
    现在时间<br />
    现在时间是:@DateTime.Now<br />
    现在时间<br />
    </p>
}

    当多行内容不在HTML闭合标签中时,需要使用行输出标记@: 或 <text></text>标记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@if (isTrue)
{
     
    @:现在时间<br />
    @:现在时间是:@DateTime.Now<br />
    @:现在时间<br />
      
}
@if (isTrue)
{
    <text>
    现在时间<br />
    现在时间是:@DateTime.Now<br />
    现在时间<br />
    </text>
}

  

SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射

.NET 数据类型 SQL Server Mobile 数据类型

binary

varbinary

boolean

bit

byte

tinyint

byte[]

varbinary

datetime

datetime

decimal

numeric

double

float

guid

uniqueidentifier

image

image

int16

smallint

Uint16

uint16

int32

int

Uint32

uint32

int64

bigint

Uint64

uint64

SqlBinary

varbinary

SqlBoolean

bit

SqlByte

tinyint

SqlDecimal

numeric

SqlDateTime

datetime

SqlDouble

float

SqlGuid

uniqueidentifier

SqlInt16

smallint

SqlInt32

int

SqlInt64

bigint

SqlMoney

money

SqlSingle

real

SqlString

nvarchar

single

real

string

nvarchar

SQL Server Mobile 支持的 SqlDecimal 数据类型只能达到 96 位。如果超过 96 位,SQL Server Mobile 将引发溢出异常错误。

binary 和 varbinary

固定长度或可变长度的 Binary 数据类型。

binary [ ( n ) ]

长度为 n 字节的固定长度二进制数据,其中 n 是从 1 到 8,000 的值。存储大小为 n 字节。

varbinary [ ( n | max ) ]

可变长度二进制数据。n 可以取从 1 到 8,000 的值。max 指示最大的存储大小为 2^31-1 字节。存储大小为所输入数据的实际长度 + 2 个字节。所输入数据的长度可以是 0 字节。varbinary 的 SQL-2003 同义词为 binary varying。

备注

如果未在数据定义或变量声明语句中指定 n,则默认长度为 1。如果未使用 CAST 函数指定 n,则默认长度为 30。

如果列数据项的大小一致,则使用 binary。

如果列数据项的大小差异相当大,则使用 varbinary。

当列数据条目超出 8,000 字节时,请使用 varbinary(max)。

datetime 和 smalldatetime

用于表示某天的日期和时间的数据类型。

datetime 和 smalldatetime

表示某天的日期和时间。

数据类型 范围 精确度

datetime

1753 年 1 月 1 日到 9999 年 12 月 31 日

3.33 毫秒

smalldatetime

1900 年 1 月 1 日到 2079 年 6 月 6 日

1 分钟

备注

Microsoft SQL Server 2005 Database Engine 用两个 4 字节的整数内部存储 datetime 数据类型的值。 第一个 4 字节存储“基础日期”(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参照日期。另外一个 4 字节存储天的时间(以午夜后经过的毫秒数表示)。

smalldatetime 数据类型存储天的日期和时间,但精确度低于 datetime。数据库引擎 将 smalldatetime 值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后经过的分钟数。

如下表所示,将 datetime 值舍入到 .000、.003、或 .007 秒的增量。

示例 舍入后的示例

01/01/98 23:59:59.999

1998-01-02 00:00:00.000

01/01/98 23:59:59.995,

01/01/98 23:59:59.996,

01/01/98 23:59:59.997 或

01/01/98 23:59:59.998

1998-01-01 23:59:59.997

01/01/98 23:59:59.992,

01/01/98 23:59:59.993 或

01/01/98 23:59:59.994

1998-01-01 23:59:59.993

01/01/98 23:59:59.990 或

01/01/98 23:59:59.991

1998-01-01 23:59:59.990

将等于或小于 29.998 秒的 smalldatetime 值向下舍入到最接近的分钟数;将等于或大于 29.999 秒的值向上舍入到最接近的分钟数。

  Razor视图引擎布局  Razor视图引擎的基本概念与法语  SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射 binary 和 varbinary  datetime 和 smalldatetime  float 和 real复制代码
--Returns time as 12:35.
SELECT CAST('2003-05-08 12:35:29.998' AS smalldatetime);
GO
--Returns time as 12:36.
SELECT CAST('2003-05-08 12:35:29.999' AS smalldatetime);
GO

float 和 real

用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;因此,并非数据类型范围内的所有值都能精确地表示。

注意:
real 的 SQL-92 同义词为 float(24)。
数据类型 范围 存储

float

-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308

取决于 n 的值

real

-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38

4 字节

语法

float [ ( n ) ]

其中 n 为用于存储 float 数值尾数的位数,以科学记数法表示,因此可以确定精度和存储大小。如果指定了 n,则它必须是介于 1 和 53 之间的某个值。n 的默认值为 53。

n value 精度 存储大小

1-24

7 位数

4 字节

25-53

15 位数

8 字节

注意:
SQL Server 2005 将 n 视为下列两个可能值之一。如果 1<=n<=24,则将 n 视为 24。如果 25<=n<=53,则将 n 视为 53。

SQL Server float[(n)] 数据类型从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。