您的位置:首页 > 编程语言 > ASP

ASP.NET MVC Razor视图引擎攻略

2012-05-08 11:13 459 查看
--引子

  看下面一段MVC 2.0的代码。

<%if (Model != null)
{%>
<p><%=Model%></p>
<%}%>
<%else
{%>
//Do something
<%}%>


  

  我们站在一个读者的立场上来看,”<% %>“这种标记C#代码的方法是十分蛋疼的。

  如果写这段代码的人没有良好的缩进和对齐习惯的话,一段逻辑较为复杂的代码就会堆砌着杂乱无章的"<%“和"%>"--匹配它们就是一件头疼的事情,会让读者望而生畏。

  即使是写代码的本人,闭合也是一件麻烦的事情,并且VS对”<% %>“的自动缩进和对齐支持不很友好,看惯了整齐的代码,面对自己写出的凌乱的东西会很不爽。

  随着MVC 3.0的发布,新的Razor视图引擎解决了这个问题。

  Razor的意思的就是 剃刀,可见它灰常犀利。引言中的代码,我们用Razor的语法来写的话:

@if (Model != null)  
{
<p>@Model</p>
}
else
{
//Do something
}


  

  Razor使用了"@"来标记一段C#代码,并帮我们进行了内部的闭合,是不是感觉清爽多了?

  Razor在减少代码冗余、增强代码可读性和vs 智能感知方面,都有着很大的优势。下面我们来具体的介绍如何在ASP.NET MVC 3.0中使用Razor。

  ---------------------------------------------引言End----------------------------------------------

一,创建基于Razor的Web程序

  首先你的开发环境必须安装.NET Framework4.0,然后在VS中新建项目时选择ASP.NET MVC 3 应用程序,在选项页面中选择视图引擎为Razor,如图1:

  View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using JohnConnor.Data;

namespace JohnConnor.Web.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
var products = new List<Product>()
{
new Product{ Name="钢笔", Price=11.55M},
new Product{ Name="铅笔", Price=2.17M},
new Product{ Name="圆珠笔", Price=5.98M},
};
return View(products);
}
}
}


  

  我们来改一下Index视图演示一下Razor的简单应用。

@using JohnConnor.Data;
@model List<Product>
@{
ViewBag.Title = "主页";//母版中ViewBag.Title用于绑定Title标签,这里进行赋值。
}
<h2>Razor</h2>
@foreach (var product in Model)
{
//遍历所有的产品
<input type="button" name="@product.Name"   value="@product.Name" onclick="alert(@product.Price)" />
}


  

  在一般视图中,首先声明视图模型,即Action返回的ViewResult对象的类型<也可以不声明,如果有返回对象建议声明>。

  这里的视图模型是一个List<Product>集合,因为Product位于using JohnConnor.Data命名空间,所以先添加了引用。

  在母版中ViewBag.Title用于绑定Title标签,在一般视图中就可以进行赋值来绑定页面的Title 。

  如果你不想使用母版,就在代码块中添加"Layout = null;"。

  最后是就是一些数据绑定,或者是逻辑的处理。

  

  Razor的基本内容大概就讲这些了,当然它还有很丰富的底蕴,需要在实际的运用过程中去学习,一篇短文是无法涵盖所有信息的。

  最后提一点,Razor暂时没有设计视图,这是比较悲摧的一点。相信之后会有的。如果对Razor的使用有任何问题,可以在此提出,能力范围内的问题我都可以提供帮助。

  希望大家多多支持。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: