asp.net core 2.0 Web简单使用:五、添加示例


添加Model


添加Anime对象

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace RCKohi.Models.Demo
{
    public class Anime
    {
        [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }
        [Required]
        [StringLength(100, ErrorMessage = "{0} 必须多于 {2} 位并且少于 {1} 位。", MinimumLength = 1)]
        [DataType(DataType.Text)]
        [Display(Name = "名称")]
        public string Name { get; set; }
        [Required]
        [DataType(DataType.Text)]
        [Display(Name = "卷均销量")]
        [RegularExpression(@"^([1-9]\d*)$", ErrorMessage = "只能输入整数。")]
        public int Number { get; set; }
        [Required]
        [DataType(DataType.Date)]
        [Display(Name = "播放时间")]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
        public DateTime BroadcastDate { get; set; }
        [Required]
        [DataType(DataType.Text)]
        [Display(Name = "首页显示")]
        public bool IndexShow { get; set; }
    }
}

添加控制器和视图


修改视图界面,


修改数据库上下文

namespace RCKohi.Data
{
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        public DbSet<RCKohi.Models.ApplicationUser> ApplicationUser { get; set; }
        public DbSet<RCKohi.Models.Demo.Anime> Anime { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            builder.Entity<Anime>().ToTable("Anime");
            base.OnModelCreating(builder);
            // Customize the ASP.NET Identity model and override the defaults if needed.
            // For example, you can rename the ASP.NET Identity table names and more.
            // Add your customizations after calling base.OnModelCreating(builder);
        }
    }
}

在DbInitializer.cs里添加默认数据



修改默认界面,运行结果






X.PagedList.Mvc.Core这个分页插件蛮好用的,如果分页不需要特别负责的情况下。

用NuGet安装下载分页插件


修改index方法


修改视图,填1行就好了。


分页功能出现了。



之后添加查询和排序功能

修改后的index方法

        // GET: Animes
        public async Task<IActionResult> Index(int? page, string searchString, string sortOrder)
        {
            var animes = from s in _context.Anime
                         select s;

            ViewData["CurrentFilter"] = searchString;
            if (!String.IsNullOrEmpty(searchString))
            {
                animes = animes.Where(s => s.Name.Contains(searchString));
            }

            ViewData["SortOrder"] = sortOrder;
            ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
            ViewData["NumberSortParm"] = sortOrder == "Number" ? "number_desc" : "Number";
            switch (sortOrder)
            {
                case "name_desc":
                    animes = animes.OrderByDescending(s => s.Name);
                    break;
                case "Date":
                    animes = animes.OrderBy(s => s.BroadcastDate);
                    break;
                case "date_desc":
                    animes = animes.OrderByDescending(s => s.BroadcastDate);
                    break;
                case "Number":
                    animes = animes.OrderBy(s => s.Number);
                    break;
                case "number_desc":
                    animes = animes.OrderByDescending(s => s.Number);
                    break;
                default:
                    animes = animes.OrderBy(s => s.Name);
                    break;
            }

            var pageNumber = page ?? 1;
            return View(await animes.AsNoTracking().ToPagedListAsync(pageNumber, 10));
        }

视图

@model IEnumerable<RCKohi.Models.Demo.Anime>
@using X.PagedList.Mvc.Core;
@using X.PagedList;

@{
    ViewData["Title"] = "动画作品";
    Layout = "~/Views/Shared/_LayoutSbAdmin2.cshtml";
}
<div class="row">
    <div class="col-lg-12">
        <div class="panel panel-default">
            <div class="panel-heading">作品列表</div>
            <div class="panel-body">
                <div class="dataTables_wrapper form-inline dt-bootstrap no-footer">
                    <div class="row">
                        <div class="col-sm-12">
                            <form asp-action="Index" method="get" role="form">
                                <div class="form-group input-group">
                                    <input type="text" name="SearchString" value="@ViewData["currentFilter"]" class="form-control" placeholder="搜索..." />
                                    <span class="input-group-btn">
                                        <button class="btn btn-default" type="submit" value="Search">
                                            <i class="fa fa-search"></i>
                                        </button>
                                    </span>
                                </div>
                            </form>
                            <table class="table table-bordered table-hover table-striped">
                                <thead>
                                    <tr>
                                        <th>
                                            <a asp-action="Index" asp-route-sortOrder="@ViewData["NameSortParm"]" asp-route-searchString="@ViewData["CurrentFilter"]">@Html.DisplayNameFor(model => model.Name)</a>
                                        </th>
                                        <th>
                                            <a asp-action="Index" asp-route-sortOrder="@ViewData["NumberSortParm"]" asp-route-searchString="@ViewData["CurrentFilter"]">@Html.DisplayNameFor(model => model.Number)</a>
                                        </th>
                                        <th>
                                            <a asp-action="Index" asp-route-sortOrder="@ViewData["DateSortParm"]" asp-route-searchString="@ViewData["CurrentFilter"]">@Html.DisplayNameFor(model => model.BroadcastDate)</a>
                                        </th>
                                        <th>
                                            @Html.DisplayNameFor(model => model.IndexShow)
                                        </th>
                                        <th>操作</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    @foreach (var item in Model)
                                    {
                                        <tr>
                                            <td>
                                                @Html.DisplayFor(modelItem => item.Name)
                                            </td>
                                            <td>
                                                @Html.DisplayFor(modelItem => item.Number)
                                            </td>
                                            <td>
                                                @Html.DisplayFor(modelItem => item.BroadcastDate)
                                            </td>
                                            <td>
                                                @string.Format("{0}", @Html.DisplayTextFor(modelItem => item.IndexShow).ToString() == "True" ? "是" : "否")
                                            </td>
                                            <td>
                                                <a asp-action="Edit" asp-route-id="@item.ID" class="btn btn-sm btn-primary" data-toggle="tooltip" data-placement="bottom" title="编辑"><i class="fa fa-edit"></i></a>
                                                <a asp-action="Details" asp-route-id="@item.ID" class="btn btn-sm btn-info" data-toggle="tooltip" data-placement="bottom" title="查看"><i class="far fa-file-alt"></i></a>
                                                <a asp-action="Delete" asp-route-id="@item.ID" class="btn btn-sm btn-warning" data-toggle="tooltip" data-placement="bottom" title="删除"><i class="far fa-trash-alt"></i></a>
                                            </td>
                                        </tr>
                                    }
                                </tbody>
                            </table>
                            @Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new { page, sortOrder = ViewData["SortOrder"], searchString = ViewData["CurrentFilter"] }))
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

最后效果如下


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值