代码改变世界

ASP.NET MVC 3 Razor 中的 @helper 特性的使用例子

2012-03-19 18:05  音乐让我说  阅读(450)  评论(0编辑  收藏  举报

参考:http://kb.cnblogs.com/page/102191/

首先定义一个 Product 类。

    public class Product
{
public Guid Id { get; set; }

public string Name { get; set; }

public decimal Price { get; set; }
}

然后在 web.config 中添加一个命名空间 <add namespace="DearBruce.MvcRazorFunctionHelper.WebUI.Models"/>

然后在项目中新增一个文件夹,命名为 App_Code ,命名为 Common.cshtml,代码如下:

@using DearBruce.MvcRazorFunctionHelper.WebUI.Models



@helper DisplayPrice(decimal price)
{
if(price == 0m)
{
<span>免费!</span>
}
else
{
@string.Format("{0:c2}", price)
}
}

@helper RepeateProduct(IEnumerable<Product> source)
{
<ul>
@foreach (var item in source)
{
<li>
商品ID:@item.Id <br />
商品名:@item.Name <br />
商品价格:@DisplayPrice(item.Price)
</li>
}
</ul>
}

 

编译时,Common.cshtml 会被编译为一个叫 Common 的类,这个类继承自 System.Web.WebPages.HelperPage,路径一般在:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\

 

Index.cshtml 代码如下:

@{
ViewBag.Title = "主页";
}

<h2>@ViewBag.Message</h2>
<p>
若要了解有关 ASP.NET MVC 的更多信息,请访问 <a href="http://asp.net/mvc" title="ASP.NET MVC 网站">http://asp.net/mvc</a>
</p>
@{
Product[] products = new Product[]
{
new Product(){ Id = Guid.NewGuid(), Name = "娃哈哈", Price = 0m },
new Product(){ Id = Guid.NewGuid(), Name = "蒙牛", Price = 10m },
new Product(){ Id = Guid.NewGuid(), Name = "伊利", Price = 20m },
};
@Common.RepeateProduct(products)
}

 

Demo 下载:https://files.cnblogs.com/Music/AboutMvcRazorHelperFeature.rar

谢谢浏览!