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

ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云

2016-12-29 00:00 651 查看

向视图中添加服务

现在,ASP.NETMVC6支持注入类到视图中,和VC类不同的是,对类是公开的、非嵌套或非抽象并没有限制。在这个例子中,我们创建了一个简单的类,用于统计代办事件、已完成事件和平均优先级的服务。

1.添加命名为Services的文件夹,在该文件夹下添加名称为StatisticsService.cs的类:

StatisticsService类代码设计如下:

usingSystem.Linq;
usingSystem.Threading.Tasks;
usingTodoList.Models;

namespaceTodoList.Services
{
publicclassStatisticsService
{
privatereadonlyApplicationDbContextdb;

publicStatisticsService(ApplicationDbContextcontext)
{
db=context;
}

publicasyncTask<int>GetCount()
{
returnawaitTask.FromResult(db.TodoItems.Count());
}

publicasyncTask<int>GetCompletedCount()
{
returnawaitTask.FromResult(
db.TodoItems.Count(x=>x.IsDone==true));
}

publicasyncTask<double>GetAveragePriority()
{
returnawaitTask.FromResult(
db.TodoItems.Average(x=>
(double?)x.Priority)??0.0);
}
}
}

2.更新Index视图注入代办事项数据,在文件顶部添加以下代码声明注入的服务:

@injectTodoList.Services.StatisticsServiceStatistics

添加标记调用StatisticsService:

<div>@Html.ActionLink("CreateNewTodo","Create","Todo")</div>
</div>

<divclass="col-md-4">
@awaitComponent.InvokeAsync("PriorityList",4,true)

<h3>Stats</h3>
<ul>
<li>Items:@awaitStatistics.GetCount()</li>
<li>Completed:@awaitStatistics.GetCompletedCount()</li>
<li>AveragePriority:@awaitStatistics.GetAveragePriority()</li>
</ul>
</div>
</div>

以下是该文件的完整代码:

@injectTodoList.Services.StatisticsServiceStatistics
@{
ViewBag.Title="HomePage";
}

<divclass="jumbotron">
<h1>ASP.NETvNext</h1>
</div>

<divclass="row">
<divclass="col-md-4">
@if(Model.Count==0)
{
<h4>NoTodoItems</h4>
}
else
{
<table>
<tr><th>TODO</th><th></th></tr>
@foreach(vartodoinModel)
{
<tr>
<td>@todo.Title</td>
<td>
@Html.ActionLink("Details","Details","Todo",new{id=todo.Id})|
@Html.ActionLink("Edit","Edit","Todo",new{id=todo.Id})|
@Html.ActionLink("Delete","Delete","Todo",new{id=todo.Id})
</td>
</tr>
}
</table>
}
<div>@Html.ActionLink("CreateNewTodo","Create","Todo")</div>
</div>

<divclass="col-md-4">
@awaitComponent.InvokeAsync("PriorityList",4,true)

<h3>Stats</h3>
<ul>
<li>Items:@awaitStatistics.GetCount()</li>
<li>Completed:@awaitStatistics.GetCompletedCount()</li>
<li>AveragePriority:@awaitStatistics.GetAveragePriority()</li>
</ul>
</div>
</div>

3.在Startup.cs文件中注册StatisticsService类:

//Thismethodgetscalledbytheruntime.
publicvoidConfigureServices(IServiceCollectionservices)
{
//AddEFservicestotheservicescontainer.
services.AddEntityFramework(Configuration)
.AddSqlServer()
.AddDbContext<ApplicationDbContext>();

//AddIdentityservicestotheservicescontainer.
services.AddDefaultIdentity<ApplicationDbContext,ApplicationUser,IdentityRole>(Configuration);

//AddMVCservicestotheservicescontainer.
services.AddMvc();

services.AddTransient<TodoList.Services.StatisticsService>();
}
以下是效果图:





发布应用到公有云

发布应用到公有云,你需要申请MicrosoftAzure帐号,如果没有,可以通过以下链接注册:activateyourMSDNsubscriberbenefits或signupforafreetrial.

1.右键点击TodoList工程>发布





2.在发布对话框中,点击MicrosoftAzureWebsites并登陆公有云帐号。





3.点击New。





4.输入sitename和region。如果你之前没有创建过数据服务器,需要新建,否则可以使用原有的数据库服务器。




数据库服务器是一个宝贵的资源。最好使用现有服务器进行测试和开发。然而由于没有密码校验机制,密码输入错误时不会有错误提示,只有在应用实际访问数据库时才会报错。





5.在Connection标签中点击>Next。





6.在Settings标签中,选择KRE版本。





7.点击Publish。

8.好了,至此你的应用就发布到公有云了,以下是效果图。





免费学习更多精品课程,登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~



本文出自“葡萄城控件技术团队博客”博客,请务必保留此出处http://powertoolsteam.blog.51cto.com/2369428/1602786
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐