ASP.NET ZERO 学习 —— (13) 应用开发Demo之页面呈现Person数据

19 篇文章 5 订阅

使用 MVC Controller调用 GETPEOPLE 方法

现在是时候使用PhoneBookController 来获取People数据并显示在视图上了。

    public class PhoneBookController : AbpZeroTemplateControllerBase
    {
        private readonly IPersonAppService _personAppService;

        public PhoneBookController(IPersonAppService personAppService)
        {
            this._personAppService = personAppService;
        }
        // GET: Mpa/PhoneBook
        public ActionResult Index(GetPeopleInput input)
        {
            var output = this._personAppService.GetPeople(input);
            var model = new IndexViewModel(output);

            return View(model);
        }
    }

我们注入了IPersonAppService 并调用GetPeople方法来获取Person列表。然后我们创建一个ViewModel对象并传递至视图层。下面是IndexViewModel

    [AutoMapFrom(typeof(ListResultDto<PersonListDto>))]
    public class IndexViewModel : ListResultDto<PersonListDto>
    {
        public IndexViewModel(ListResultDto<PersonListDto> output)
        {
            output.MapTo(this);
        }
    }

这里,我们扩展了PersonAppService.GetPeople 方法的输出。通过构造函数获取输出并映射这个对象。我们如要使用映射,需要添加AutoMapFrom属性。

应用服务和ViewModels

我们创建应用服务(PersonAppService)并通过Controller来使用它。相对的,我们也可以通过Controller直接调用Repository,完全不使用应用服务。ASP.NET Zero在这里没有对架构做任何强制性要求,我们在SPAMPA都使用了应用层(应用服务和DTOs)。因此,我们独立于ASP.NET MVC进行了实现,这使得应用层可以重复适用于不同的展示层。但是,如果你只会开发ASP.NET MVC,你可以在Controller里实现应用逻辑和访问Repository,这可能会简化你的架构和开发模式。

在MVC View中呈现 People

我们在页面上展示People是最基本的表单。见下面代码:

@using MyCompanyName.AbpZeroTemplate.Web.Navigation
@model MyCompanyName.AbpZeroTemplate.Web.Areas.Mpa.Models.PhoneBook.IndexViewModel

@{
    ViewBag.CurrentPageName = PageNames.App.Tenant.PhoneBook;
}

<div class="row margin-bottom-5">
    <div class="col-xs-12">
        <div class="page-head">
            <div class="page-title">
                <h1>
                    <span>@L("PhoneBook")</span>
                </h1>
            </div>
        </div>
    </div>
</div>

<div class="portlet light">
    <div class="portlet-body">
        <h3>@L("AllPeople")</h3>
        <div class="list-group">
            @foreach (var person in Model.Items)
            {
                <a href="javascript:;" class="list-group-item">
                    <h4 class="list-group-item-heading">
                        @person.Name @person.Surname
                    </h4>
                    <p class="list-group-item-text">
                        @person.EmailAddress
                    </p>
                </a>
            }
        </div>
    </div>
</div>

我们定义的@model 并使用了foreach循环来显示people,结果如下:

这里写图片描述

我们成功的将数据库中的数据显示在了页面上。

关于显示表格数据

我们通常使用基于table/grid javascript的库来显示表格数据,而不是手动渲染这样的数据。例如,在ASP.NET Zero里我们使用JTable在用户页面上显示用户数据。使用这样的组件,因为它们更简单并且提供了更好的用户体验。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值