ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云
向视图中添加服务
现在,ASP.NET MVC 6支持注入类到视图中,和VC类不同的是,对类是公开的、非嵌套或非抽象并没有限制。在这个例子中,我们创建了一个简单的类,用于统计代办事件、已完成事件和平均优先级的服务。
1.添加命名为服务的文件夹,在该文件夹下添加名称为StatisticsService.cs的类:
StatisticsService类代码设计如下:
使用 System.Linq的;
使用 System.Threading.Tasks;
使用 TodoList.Models;
命名空间 TodoList.Services
{
公共 类 StatisticsService
{
私人 只读 ApplicationDbContext分贝;
公共 StatisticsService(ApplicationDbContext上下文)
{
DB =背景;
}
公共异步任务<int>的getCount将()
{
返回等待Task.FromResult(db.TodoItems.Count());
}
公共异步任务<int>的GetCompletedCount()
{
返回等待Task.FromResult(
db.TodoItems.Count(X => x.IsDone == 真));
}
公共异步任务< 双 > GetAveragePriority()
{
返回等待Task.FromResult(
db.TodoItems.Average(X =>
(翻倍?)x.Priority)?0.0);
}
}
}
2.更新索引视图注入代办事项数据,在文件顶部添加以下代码声明注入的服务:
@Inject TodoList.Services.StatisticsService统计
添加标记调用StatisticsService:
<DIV> @ Html.ActionLink(“ 创建新的Todo ”,“ 创建 ”,“ 藤堂 ”)</ DIV>
</ DIV>
<DIV 类 =“ COL-MD-4 ”>
@await Component.InvokeAsync(“ PriorityList ”,4,真)
<H3>统计信息</ H3>
<ul>
<LI>产品:@await Statistics.GetCount()</ li>
<LI>完成:@await Statistics.GetCompletedCount()</ li>
<LI>平均优先级:@await Statistics.GetAveragePriority()</ li>
</ ul>
</ DIV>
</ DIV>
以下是该文件的完整代码:
@Inject TodoList.Services.StatisticsService统计
@ {
ViewBag.Title =“ 主页 ”;
}
<DIV 类 =“ 超大屏幕 ”>
<H1> ASP.NET vNext </ H1>
</ DIV>
<DIV 类 =“ 行 ”>
<DIV 类 =“ COL-MD-4 ”>
@ 如果(Model.Count == 0)
{
<H4>无待办事项</ H4>
}
其他
{
<TABLE>
<TR> <日> TODO </日> <日> </日> </ TR>
@foreach(VAR待办事项的模型)
{
<TR>
<TD> @ todo.Title </ TD>
<TD>
@ Html.ActionLink(“ 详细信息 ”,“ 详细信息 ”,“ 藤堂 ”,新 {ID = todo.Id})|
@ Html.ActionLink(“ 编辑 ”,“ 编辑 ”,“ 藤堂 ”,新 {ID = todo.Id})|
@ Html.ActionLink(“ 删除 ”,“ 删除 ”,“ 藤堂 ”,新 {ID = todo.Id})
</ TD>
</ TR>
}
</ TABLE>
}
<DIV> @ Html.ActionLink(“ 创建新的Todo ”,“ 创建 ”,“ 藤堂 ”)</ DIV>
</ DIV>
<DIV 类 =“ COL-MD-4 ”>
@await Component.InvokeAsync(“ PriorityList ”,4,真)
<H3>统计信息</ H3>
<ul>
<LI>产品:@await Statistics.GetCount()</ li>
<LI>完成:@await Statistics.GetCompletedCount()</ li>
<LI>平均优先级:@await Statistics.GetAveragePriority()</ li>
</ ul>
</ DIV>
</ DIV>
3.在Startup.cs文件中注册StatisticsService类 :
//此方法被运行时调用。
公共无效ConfigureServices(IServiceCollection服务)
{
//加入EF服务到服务容器。
services.AddEntityFramework(结构)
.AddSqlServer()
.AddDbContext <ApplicationDbContext>();
//添加标识服务到服务容器。
services.AddDefaultIdentity <ApplicationDbContext,ApplicationUser,IdentityRole>(配置);
//添加MVC服务到服务容器。
services.AddMvc();
services.AddTransient <TodoList.Services.StatisticsService>();
}
以下是效果图:
应用发布到公有云
发布应用到公有云,你需要申请微软Azure帐号,如果没有,可以通过以下链接注册:**您的MSDN订阅的好处或注册一个免费试用。
1.右键点击TodoList的工程> 发布
2.在发布对话框中,点击微软Azure网站并登陆公有云帐号。
3.点击新建。
4.输入网站名称和region。如果你之前没有创建过数据服务器,需要新建,否则可以使用原有的数据库服务器。
数据库服务器是一个宝贵的资源。最好使用现有服务器进行测试和开发。然而由于没有密码校验机制,密码输入错误时不会有错误提示,只有在应用实际访问数据库时才会报错。
5.在连接标签中点击> 下一步。
6.在设置标签中,选择KRE版本。
7.点击发布。
8.好了,至此你的应用就发布到公有云了,以下是效果图。
原文链接:http://www.asp.net/vnext/overview/aspnet-vnext/vc#inj
以上内容,介绍了如何向视图中添加服务和发布应用到公有云中,大家可以将这些知识运用到实际开发中。开发时还可以借助一些工具。ComponentOne Studio for ASP.NET 是ASP.NET平台上的一整套完备的开发工具包,用于在各种浏览器中创建和设计具有现代风格的Web应用程序。
系列文章目录: