上学的稿子在那边:

作者:[美]Adam Freeman      来源:《精通ASP.NET MVC 4》

 

Razor 是微软 MVC3引进的视图引擎的名目,并在MVC 四 中开始展览了修订。视图引擎处理
ASP.NET内容,并物色指令,典型的是将动态内容插入到发送给浏览器的出口。

微软保证了多少个视图引擎 ——
已经支撑 ASP.NET 开发许多年的依据<% 和 %>标签的 ASPX
引擎,以及以@字符标注内容范围的 Razor 引擎。

1.开立示范项目

打开Microsoft Visual
Studio 贰零一三 ,新建MVC 肆项目 Razor ,选取航空模型板。

1.一 定义模型

在 Models
文件夹下新建类文件 Product.cs

namespace Razor.Models
{
    public class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }
}

一.二 定义控制器

在 Controllers 文件夹下新建控制器 HomeController ,模板为空

namespace Razor.Controllers
{
    /**
     * 此类定义了一个叫做 Index 的动作方法,创建了一个Product 对象,并对其进行属性填充。
     * 将此Product 对象传递给了 View 方法,以便在渲染视图时使用它。
     * */
    public class HomeController : Controller
    {
        Product myProduct = new Product
        {
            ProductID = 1,
            Name = "Kayak",
            Description = "A boat for one person",
            Category = "Watersports",
            Price = 275M
        };

        public ActionResult Index()
        {
            return View(myProduct);
        }

    }
}

一.3 创设视图

右击 HomeController 类的 Index 方法,添加视图像和文字件 Index.cshtml ,模型类为
Razor.Models.Product

金沙注册送58 1

 

@model Razor.Models.Product

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>

    </div>
</body>
</html>

 

C#之razor。二.使用模型对象

从视图第一行开头

...
@model Razor.Models.Product
...

Razor 语句以@字符初阶。此处@model
语句注脚了经过动作方法传递给该视图的模型对象的花色。那让用户能够因而@Model
来引用视图模型对象的点子、字段和属性。

@model Razor.Models.Product

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        产品名称:@Model.Name
    </div>
    <div>
        产品说明:@Model.Description
    </div>
    <div>
        产品类别:@Model.Category
    </div>
</body>
</html>

显示效果:

金沙注册送58 2

* 注脚视图模型对象的项目应用@model (小写m),而访问Name 属性使用@Model
(大写M)。

 

三.用到布局

Index.cshtml 视图像和文字件中的另3个 Razor 表达式如下所示:

...
@{
    Layout = null;
}
...

那是3个 Razor
代码块的例子,那种代码块能够在视图中含有C#话语。那种代码块以@{早先,以}甘休,而个中的语句会在视图被渲染时开展实践。

此处将Layout 设置为null的成效是报告 MVC
框架,改视图是自包罗的,并且会渲染重临给客户端所要求的全部内容。

三.1 创设布局

右击Views 文件夹新建 “MVC 4布局页(Razor)”,文件名字为 _BaseLayout.cshtml
。布局的初期内容如下:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>
        @RenderBody()
    </div>
</body>
</html>

金沙注册送58,布局是尤其情势的视图。对@RenderBody
方法的调用会将动作方法所钦定的视图内容插入到布局标记中。布局中的另三个Razor 表明式会在 ViewBag 中找寻一个称作 Title 的习性,目标是安装 title
成分的情节。

修改布局文件如下:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>
        <h1>Product Information</h1>
        <div style="padding:20px;border:solid medium black;font-size:20pt;">
            @RenderBody()
        </div>
        <h2>Visit <a href="http://apress.com">Apress</a></h2>
    </div>
</body>
</html>

三.二 运用布局

为了将布局文件运用于视图,只需求安装 Layout 属性的值。修改 Index.cshtml
如下:

@model Razor.Models.Product

@{
    ViewBag.Title = "Product Info";
    Layout = "~/Views/_BaseLayout.cshtml";
}
<div>
    产品名称:@Model.Name
</div>
<div>
    产品说明:@Model.Description
</div>
<div>
    产品类别:@Model.Category
</div>
<div>
    产品价格:$@Model.Price
</div>

呈现效果如下图所示:

金沙注册送58 3

 三.三 使用视图起先文件

还有个不荒谬要缓解,那正是,必须在每1个视图中都要钦点布局文件。那代表,要重新命名布局文件,那么必须找出引用该布局的每3个视图并拓展修改,那将是1个易错的进程。

通过使用视图早先文件能够解决此难点。在渲染2个视图时,MVC
框架会寻找1个叫作 _ViewStart.cshtml
的文本。框架会将此文件的始末就是视图文件的一有的,于是用户能够使用那1风味为
Layout 属性自动的设置1个值。

同等,在Views 文件夹下新建”MVC 4布局页(Razor)”,文件名字为
_ViewStart.cshtml ,修改文件内容为:

@{
    Layout = "~/Views/_BaseLayout.cshtml";
}

此视图初叶文件含有 Layout 属性的值,那意味着用户能够去除 Index.cshtml
文件中相应的口舌:

@model Razor.Models.Product

@{
    ViewBag.Title = "Product Info";
}
<div>
    产品名称:@Model.Name
</div>
<div>
    产品说明:@Model.Description
</div>
<div>
    产品类别:@Model.Category
</div>
<div>
    产品价格:$@Model.Price
</div>

不必以别的格局钦命希望利用的视图早先文件。MVC
框架会对此文件进行定点,并活动地利用其剧情。若在视图像和文字件中重新定义了
Layout 值,会覆盖视图初叶文件中所钦定的布局。

三.四 演示共享布局

在控制器文件 HomeController 中新建艺术 NameAndPrice 如下:

        public ActionResult NameAndPrice()
        {
            return View(myProduct);
        }

足够对应的视图像和文字件 NameAndPrice.cshtml 如下

金沙注册送58 4

@model Razor.Models.Product

@{
    ViewBag.Title = "NameAndPrice";
    Layout = "~/Views/_BaseLayout.cshtml";
}

<h2>NameAndPrice</h2>
The product name is @Model.Name and it costs $@Model.Price

运行并导航到 /Home/NameAndPrice ,显示效果如下:

金沙注册送58 5

 

4.使用 Razor 表达式

在三个好的MVC框架应用程序中,动作方法与视图所起的效应是清晰分离的。

动作方法与视图所起的法力

组件

要做的事

不做的事

动作方法

向视图传递三个视图模型

向视图传递格式化的数据

视图

使用视图模型对象向用户展现内容

修改视图模型对象的其余方面

 

 

 

 

四.壹插入数据值

用 Razor
表明式能做的最简便的业务是将数据值插入到标记中。用户能够用@Model
表明式来做那件工作,以引用视图模型对象所定义的属性和艺术,大概选取@Viewbag
表达式,以引用通过视图包性子动态定义的性能。

在 Home 控制器中新增动作方法 德姆oExpressions

        public ActionResult DemoExpressions()
        {
            ViewBag.ProductCount = 1;
            ViewBag.ExpressShip = true;
            ViewBag.ApplyDiscount = false;
            ViewBag.Supplier = null;
            return View(myProduct);
        }

并成立对应的视图像和文字件 德姆oExpression.cshtml

@model Razor.Models.Product

@{
    ViewBag.Title = "DemoExpressions";
}
<table>
    <thead>
        <tr><th>Property</th><th>Value</th></tr>
    </thead>
    <tbody>
        <tr><th>Name</th><th>@Model.Name</th></tr>
        <tr><th>Price</th><th>@Model.Price</th></tr>
        <tr><th>Stock Level</th><th>@ViewBag.ProductCount</th></tr>
    </tbody>
</table>

导航到对应的UEscortL /Home/德姆oExpressions ,展现效果如下:

金沙注册送58 6

4.二 设置标签属性的值

到此停止的持有例子都以设置元素内容,但用户也足以运用Razor
表明式来设置成分标签的值。修改视图像和文字件 德姆oExpressions.cshtml 文件如下:

@model Razor.Models.Product

@{
    ViewBag.Title = "DemoExpressions";
}
<table>
    <thead>
        <tr><th>Property</th><th>Value</th></tr>
    </thead>
    <tbody>
        <tr><th>Name</th><th>@Model.Name</th></tr>
        <tr><th>Price</th><th>@Model.Price</th></tr>
        <tr><th>Stock Level</th><th>@ViewBag.ProductCount</th></tr>
    </tbody>
</table>
<div data-discount="@ViewBag.ApplyDiscount" data-express="@ViewBag.ExpressShip" data-supplier="@ViewBag.Supplier">
    The containing element has data attributes
</div>
Discount:<input type="checkbox"  checked="@ViewBag.ApplyDiscount"/>
Express:<input type="checkbox" checked="@ViewBag.ExpressShip" />
Supplier:<input type="checkbox" checked="@ViewBag.Supplier" />

呈现效果如下:

金沙注册送58 7

 ④.叁 使用规范语句

修改视图像和文字件 德姆oExpressions.cshtml 文件如下:

@model Razor.Models.Product

@{
    ViewBag.Title = "DemoExpressions";
}
<table>
    <thead>
        <tr><th>Property</th><th>Value</th></tr>
    </thead>
    <tbody>
        <tr><th>Name</th><th>@Model.Name</th></tr>
        <tr><th>Price</th><th>@Model.Price</th></tr>
        <tr><th>Stock</th>
            <th>
                @switch ((int)ViewBag.ProductCount)
                {
                    case 0:
                        @:Out of Stock
                        break;
                        case 1:
                        <b>Low Stock (@ViewBag.ProductCount)</b>
                        break;
                    default:
                    @ViewBag.ProductCount
                        break;
                }
            </th>
        </tr>
    </tbody>
</table>

为了开首一个尺码语句,要在C#
的规则首要字前放一个@字符。在此例中,此规范根本字
switch。就如在规则的C# 代码块中的1样,要以闭花括号{}来终止代码块

在 Razor 代码块的中间,只要通过定义HTML 以及Razor 表达式,就足以将HTML
成分和数值插入到视图输出,例如:

...
<b>Low Stock (@ViewBag.ProductCount)</b>
...
@ViewBag.ProductCount
...

无须将成分或表达式放在引号内或以特殊的艺术来代表它们——Razor
引擎会将这几个解释为正规艺术处理的出口。但是,假诺想将未蕴含在HTML
成分中的文字文本插入到视图,则要求采纳Razor
的八个协理理工科程师具,并以它看做那1行的前缀,例如:

...
@:Out of Stock
...

@:字符阻止Razor 将此行解释为一条C# 语句,这是Razor
境遇文件时的暗中认可行为。

此例呈现效果如下:

金沙注册送58 8

把此例的switch语句改成if语句,也可发出相同的效用:

@if (ViewBag.ProductCount == 0)
{
    @:Out of Stock
}
else if (ViewBag.ProductCount == 1)
{
    <b>Low Stock (@ViewBag.ProductCount)</b>
}
else
{ 
    @ViewBag.ProductCount
}

四.四 枚举数组和汇集

在编写MVC
应用程序时,用户会平日希望枚举一个数组或局部别的花样对象集合的情节,并生成一种细节内容。

在 Home 控制器文件 HomeController.cs 中新建动作方法 德姆oArray

        public ActionResult DemoArray()
        {
            Product[] array = { 
                              new Product{Name="Kayak",Price=275M},
                              new Product{Name="Lifejacket",Price=48.95M},
                              new Product{Name="Soccer",Price=19.50M},
                              new Product{Name="Corner flag",Price=34.95M}
                              };
            return View(array);
        }

接下来成立对应的视图像和文字件德姆oArray.cshtml

@model Razor.Models.Product[]

@{
    ViewBag.Title = "DemoArray";
}
@if (Model.Length > 0)
{ 
    <table>
        <thead><tr><th>Product</th><th>Price</th></tr></thead>
        <tbody>
            @foreach(Razor.Models.Product p in Model){
            <tr>
                <td>@p.Name</td>
                <td>$@p.Price</td>
            </tr>
            }
        </tbody>
    </table>
}

导航到对应的UPAJEROL地址:/Home/德姆oArray ,效果图如下:

金沙注册送58 9

4.五 处理命名空间

此例在最棒的foreach 循环中使用了全限定名的Product 类:

...
@foreach(Razor.Models.Product p in Model)
...

可以对多个视图运用@using 表明式,以引进命名空间:

@using Razor.Models;
@model Product[]

@{
    ViewBag.Title = "DemoArray";
}
@if (Model.Length > 0)
{ 
    <table>
        <thead><tr><th>Product</th><th>Price</th></tr></thead>
        <tbody>
            @foreach(Product p in Model){
            <tr>
                <td>@p.Name</td>
                <td>$@p.Price</td>
            </tr>
            }
        </tbody>
    </table>
}

 

作者:[美]Adam Freeman      来源:《精通ASP.NET MVC 4》

 

Razor 是微软 MVC3引进的视图引擎的名称,并在MVC 4 中开展了修订。视图引擎处理
ASP.NET内容,并物色指令,典型的是将动态内容插入到发送给浏览器的出口。

微软维持了四个视图引擎 ——
已经支持 ASP.NET 开发许多年的依照<% 和 %>标签的 ASPX
引擎,以及以@字符标注内容范围的 Razor 引擎。

1.创办示范项目

打开Microsoft Visual
Studio 2011 ,新建MVC 四项目 Razor ,选拔空模板。

一.一 定义模型

在 Models
文件夹下新建类文件 Product.cs

namespace Razor.Models
{
    public class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }
}

一.二 定义控制器

在 Controllers 文件夹下新建控制器 HomeController ,模板为空

namespace Razor.Controllers
{
    /**
     * 此类定义了一个叫做 Index 的动作方法,创建了一个Product 对象,并对其进行属性填充。
     * 将此Product 对象传递给了 View 方法,以便在渲染视图时使用它。
     * */
    public class HomeController : Controller
    {
        Product myProduct = new Product
        {
            ProductID = 1,
            Name = "Kayak",
            Description = "A boat for one person",
            Category = "Watersports",
            Price = 275M
        };

        public ActionResult Index()
        {
            return View(myProduct);
        }

    }
}

一.叁 创造视图

右击 HomeController 类的 Index 方法,添加视图像和文字件 Index.cshtml ,模型类为
Razor.Models.Product

金沙注册送58 10

 

@model Razor.Models.Product

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>

    </div>
</body>
</html>

 

二.行使模型对象

从视图第三行开首

...
@model Razor.Models.Product
...

Razor 语句以@字符开首。此处@model
语句注解了经过动作方法传递给该视图的模子对象的项目。那让用户能够由此@Model
来引用视图模型对象的章程、字段和总体性。

@model Razor.Models.Product

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        产品名称:@Model.Name
    </div>
    <div>
        产品说明:@Model.Description
    </div>
    <div>
        产品类别:@Model.Category
    </div>
</body>
</html>

突显效果:

金沙注册送58 11

* 表明视图模型对象的类型应用@model (小写m),而访问Name 属性使用@Model
(大写M)。

 

三.行使布局

Index.cshtml 视图像和文字件中的另二个 Razor 表明式如下所示:

...
@{
    Layout = null;
}
...

那是四个 Razor
代码块的事例,那种代码块能够在视图中涵盖C#话语。那种代码块以@{起初,以}甘休,而个中的语句会在视图被渲染时开展实践。

此处将Layout 设置为null的成效是报告 MVC
框架,改视图是自包罗的,并且会渲染重临给客户端所急需的全体内容。

叁.一 创立布局

右击Views 文件夹新建 “MVC 四布局页(Razor)”,文件名字为 _BaseLayout.cshtml
。布局的最初内容如下:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>
        @RenderBody()
    </div>
</body>
</html>

布局是独特殊形体式的视图。对@RenderBody
方法的调用会将动作方法所钦定的视图内容插入到布局标记中。布局中的另3个Razor 表明式会在 ViewBag 中摸索1个称呼 Title 的属性,指标是安装 title
元素的内容。

修改布局文件如下:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>
        <h1>Product Information</h1>
        <div style="padding:20px;border:solid medium black;font-size:20pt;">
            @RenderBody()
        </div>
        <h2>Visit <a href="http://apress.com">Apress</a></h2>
    </div>
</body>
</html>

3.二 运用布局

为了将布局文件运用于视图,只须求安装 Layout 属性的值。修改 Index.cshtml
如下:

@model Razor.Models.Product

@{
    ViewBag.Title = "Product Info";
    Layout = "~/Views/_BaseLayout.cshtml";
}
<div>
    产品名称:@Model.Name
</div>
<div>
    产品说明:@Model.Description
</div>
<div>
    产品类别:@Model.Category
</div>
<div>
    产品价格:$@Model.Price
</div>

体现效果如下图所示:

金沙注册送58 12

 三.三 使用视图起初文件

还有个小标题要消除,那便是,必须在每3个视图中都要内定布局文件。那意味着,要重新命名布局文件,那么必须找出引用该布局的每二个视图并开始展览改动,那将是2个易错的进度。

透过动用视图开始文件能够化解此难题。在渲染二个视图时,MVC
框架会寻找三个叫作 _ViewStart.cshtml
的公文。框架会将此文件的始末正是视图像和文字件的一有的,于是用户能够行使这一风味为
Layout 属性自动的装置二个值。

相同,在Views 文件夹下新建”MVC 肆布局页(Razor)”,文件名叫
_ViewStart.cshtml ,修改文件内容为:

@{
    Layout = "~/Views/_BaseLayout.cshtml";
}

此视图起头文件含有 Layout 属性的值,这意味着用户能够去除 Index.cshtml
文件中相应的言辞:

@model Razor.Models.Product

@{
    ViewBag.Title = "Product Info";
}
<div>
    产品名称:@Model.Name
</div>
<div>
    产品说明:@Model.Description
</div>
<div>
    产品类别:@Model.Category
</div>
<div>
    产品价格:$@Model.Price
</div>

毋庸以其余格局钦点希望利用的视图起头文件。MVC
框架会对此文件举行固化,并活动地动用其内容。若在视图像和文字件中重复定义了
Layout 值,会覆盖视图初阶文件中所钦赐的布局。

三.肆 演示共享布局

在控制器文件 HomeController 中新建艺术 NameAndPrice 如下:

        public ActionResult NameAndPrice()
        {
            return View(myProduct);
        }

加上对应的视图像和文字件 NameAndPrice.cshtml 如下

金沙注册送58 13

@model Razor.Models.Product

@{
    ViewBag.Title = "NameAndPrice";
    Layout = "~/Views/_BaseLayout.cshtml";
}

<h2>NameAndPrice</h2>
The product name is @Model.Name and it costs $@Model.Price

开发银行并导航到 /Home/NameAndPrice ,突显效果如下:

金沙注册送58 14

 

4.使用 Razor 表达式

在3个好的MVC框架应用程序中,动作方法与视图所起的机能是清楚分离的。

动作方法与视图所起的作用

组件

要做的事

不做的事

动作方法

向视图传递二个视图模型

向视图传递格式化的数额

视图

行使视图模型对象向用户彰显内容

修改视图模型对象的别样地点

 

 

 

 

四.一插入数据值

用 Razor
表明式能做的最不难易行的工作是将数据值插入到标记中。用户能够用@Model
表明式来做那件工作,以引用视图模型对象所定义的属性和章程,或然采用@Viewbag
表明式,以引用通过视图包天性动态定义的性质。

在 Home 控制器中新增动作方法 DemoExpressions

        public ActionResult DemoExpressions()
        {
            ViewBag.ProductCount = 1;
            ViewBag.ExpressShip = true;
            ViewBag.ApplyDiscount = false;
            ViewBag.Supplier = null;
            return View(myProduct);
        }

并创制对应的视图像和文字件 德姆oExpression.cshtml

@model Razor.Models.Product

@{
    ViewBag.Title = "DemoExpressions";
}
<table>
    <thead>
        <tr><th>Property</th><th>Value</th></tr>
    </thead>
    <tbody>
        <tr><th>Name</th><th>@Model.Name</th></tr>
        <tr><th>Price</th><th>@Model.Price</th></tr>
        <tr><th>Stock Level</th><th>@ViewBag.ProductCount</th></tr>
    </tbody>
</table>

导航到相应的UKugaL /Home/德姆oExpressions ,突显效果如下:

金沙注册送58 15

四.二 设置标签属性的值

到此甘休的保有例子都是设置元素内容,但用户也足以动用Razor
表明式来设置成分标签的值。修改视图像和文字件 德姆oExpressions.cshtml 文件如下:

@model Razor.Models.Product

@{
    ViewBag.Title = "DemoExpressions";
}
<table>
    <thead>
        <tr><th>Property</th><th>Value</th></tr>
    </thead>
    <tbody>
        <tr><th>Name</th><th>@Model.Name</th></tr>
        <tr><th>Price</th><th>@Model.Price</th></tr>
        <tr><th>Stock Level</th><th>@ViewBag.ProductCount</th></tr>
    </tbody>
</table>
<div data-discount="@ViewBag.ApplyDiscount" data-express="@ViewBag.ExpressShip" data-supplier="@ViewBag.Supplier">
    The containing element has data attributes
</div>
Discount:<input type="checkbox"  checked="@ViewBag.ApplyDiscount"/>
Express:<input type="checkbox" checked="@ViewBag.ExpressShip" />
Supplier:<input type="checkbox" checked="@ViewBag.Supplier" />

展现效果如下:

金沙注册送58 16

 4.三 使用规范语句

修改视图像和文字件 德姆oExpressions.cshtml 文件如下:

@model Razor.Models.Product

@{
    ViewBag.Title = "DemoExpressions";
}
<table>
    <thead>
        <tr><th>Property</th><th>Value</th></tr>
    </thead>
    <tbody>
        <tr><th>Name</th><th>@Model.Name</th></tr>
        <tr><th>Price</th><th>@Model.Price</th></tr>
        <tr><th>Stock</th>
            <th>
                @switch ((int)ViewBag.ProductCount)
                {
                    case 0:
                        @:Out of Stock
                        break;
                        case 1:
                        <b>Low Stock (@ViewBag.ProductCount)</b>
                        break;
                    default:
                    @ViewBag.ProductCount
                        break;
                }
            </th>
        </tr>
    </tbody>
</table>

为了初阶三个准绳语句,要在C#
的标准主要字前放二个@字符。在此例中,此条件根本字
switch。就如在规则的C# 代码块中的一样,要以闭花括号{}来终止代码块

在 Razor 代码块的其中,只要通过定义HTML 以及Razor 表达式,就足以将HTML
成分和数值插入到视图输出,例如:

...
<b>Low Stock (@ViewBag.ProductCount)</b>
...
@ViewBag.ProductCount
...

毋庸将成分或表明式放在引号内或以特殊的诀要来表示它们——Razor
引擎会将那个解释为健康格局处理的输出。不过,若是想将未包涵在HTML
成分中的文字文本插入到视图,则必要使用Razor
的三个协助理工科程师具,并以它当做那一行的前缀,例如:

...
@:Out of Stock
...

@:字符阻止Razor 将此行解释为一条C# 语句,那是Razor
蒙受文件时的暗中同意行为。

此例显示效果如下:

金沙注册送58 17

把此例的switch语句改成if语句,也可发出同样的机能:

@if (ViewBag.ProductCount == 0)
{
    @:Out of Stock
}
else if (ViewBag.ProductCount == 1)
{
    <b>Low Stock (@ViewBag.ProductCount)</b>
}
else
{ 
    @ViewBag.ProductCount
}

四.4 枚举数组和集纳

在编写MVC
应用程序时,用户会时时希望枚举1个数组或部分其余花样对象集合的情节,并生成1种细节内容。

在 Home 控制器文件 HomeController.cs 中新建动作方法 德姆oArray

        public ActionResult DemoArray()
        {
            Product[] array = { 
                              new Product{Name="Kayak",Price=275M},
                              new Product{Name="Lifejacket",Price=48.95M},
                              new Product{Name="Soccer",Price=19.50M},
                              new Product{Name="Corner flag",Price=34.95M}
                              };
            return View(array);
        }

接下来制造对应的视图像和文字件德姆oArray.cshtml

@model Razor.Models.Product[]

@{
    ViewBag.Title = "DemoArray";
}
@if (Model.Length > 0)
{ 
    <table>
        <thead><tr><th>Product</th><th>Price</th></tr></thead>
        <tbody>
            @foreach(Razor.Models.Product p in Model){
            <tr>
                <td>@p.Name</td>
                <td>$@p.Price</td>
            </tr>
            }
        </tbody>
    </table>
}

导航到对应的ULANDL地址:/Home/德姆oArray ,效果图如下:

金沙注册送58 18

四.5 处理命名空间

此例在最佳的foreach 循环中运用了全限定名的Product 类:

...
@foreach(Razor.Models.Product p in Model)
...

可以对二个视图运用@using 表明式,以引进命名空间:

@using Razor.Models;
@model Product[]

@{
    ViewBag.Title = "DemoArray";
}
@if (Model.Length > 0)
{ 
    <table>
        <thead><tr><th>Product</th><th>Price</th></tr></thead>
        <tbody>
            @foreach(Product p in Model){
            <tr>
                <td>@p.Name</td>
                <td>$@p.Price</td>
            </tr>
            }
        </tbody>
    </table>
}

 

视图

一、视图开首文件_ViewStart.cshtml

预先使用 Blade

视图像和文字件 必须 优先思索采取 .blade.php 后缀来钦命使用 Blade
模板引擎。

@renderbody方法放在DIV中。那样我们得以分别哪些内容来自布局文件,哪些内容出自视图。

保险目录清晰

  • layouts – 页面布局文件 必须 放置于此目录下;
  • common – 存放页面通用元素;
  • pages – 简单的页面存放文件夹,如:about、contact 等;
  • resources – 对应 Restful 路由的能源路径名称,以 U卡宴I photos/create
    为例,对应 create.blade.php文本,存放在文件夹photos 下。

必须 避免在 resources/views 目录下直接放置视图像和文字件。

2、Data特性

一些视图

有个别视图像和文字件 必须 使用 _
前缀来命名,如:photos/_upload_form.blade.php

三、强类型的视图

视图命名要释义

为了和 Restful 路由器和财富控制器保持1致,视图命名也 必须
使用财富视图的命名情势。以 photos 为例:

  • photos/index.blade.php
    • 剧情列表视图
    • 对应路由器 /photos,命名 photos.index
    • 控制器方法 PhotosController@index
  • photos/show.blade.php
    • 单个内容视图
    • 对应路由器 /photos/{id},命名 photos.show
    • 控制器方法 PhotosController@show
  • photos/create.blade.php
    • 内容创制视图
    • 对应路由器 /photos/create,命名 photos.create
    • 控制器方法 PhotosController@create
  • photos/edit.blade.php
    • 内容编排的视图
    • 对应路由器 /photos/edit,命名 photos.edit
    • 控制器方法 PhotosController@edit

create_and_edit 视图

多多景色下,成立和编排视图里的页面结构类似一般,在那种场合下,应该
使用 create_and_edit 视图。以 photos 为例:

  • PhotosController@create
    对应视图:/photos/create_and_edit.blade.php
  • PhotosController@edit – 对应
    视图:/photos/create_and_edit.blade.php

那样壹来,经常状态下,3个完好的 photos 能源对应的视图像和文字件为以下:

├── photos
│   ├── create_and_edit.blade.php
│   ├── index.blade.php
│   └── show.blade.php

相关文章

网站地图xml地图