.Net Core Razor 4. VS2022 + Core6.0 + Razor 设置model特性改变显示的属性名称,通过@page指令改变路由规则,

通过Model的特性修改显示的内容/规则

  目前在Index页面上,显示的表头都是model的字段名,在实际项目中通常不会这么做,这里我们修改一下Model部分来让表头显示的更加直观。

  1.引入System.ComponentModel.DataAnnotations.Schema,也可以事后根据提示自动添加。

  2.[Display(Name = "标题")],指定属性显示的名称为 Name = “xxx” 的内容。

  3.[DataType(DataType.Date)],限制日期字段只显示到年月日。

  4.[Column(TypeName ="decimal(18,2)")],则是为了让价格字段能正确映射到数据库的货币类型。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace StandardCoreStudy.Models
{
    public class Movie
    {
        /// <summary>
        /// ID
        /// </summary>
        public int ID { get; set; }
        /// <summary>
        /// 标题
        /// </summary>
        [Display(Name = "标题")]
        public string Title { get; set; } = string.Empty;

        /// <summary>
        /// 发布日期
        /// 表示发布日期只需要日期,不需要精确到时间部分
        /// </summary>
        [Display(Name ="发行日期")]
        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        /// <summary>
        /// 类型
        /// </summary>
        [Display(Name = "类型")]
        public string Genre { get; set; } = string.Empty;
        /// <summary>
        /// 价格
        /// </summary>
        [Display(Name = "票价")]
        [Column(TypeName ="decimal(18,2)")]
        public decimal Price { get; set; }
    }
}

 

修改Detail详情页的路由规则

  目前在列表页index上,详情页的链接规则是

 <a asp-page="./Details" asp-route-id="@item.ID">Details</a>

  生成的html代码是

 <a href="/Movies/Details?id=1">Details</a> 

  可以修改@page指令来变成 /Movies/Details/1 

  打开详情页Detail.cshtml,在头部修改代码

@page "{id:int?}"

  生成后,可以发现指向详情页的链接格式已经自动更新成  /Movies/Details/id这种了,而修改edit和删除delete的 链接格式 则没有变化。

 

posted @ 2023-05-11 13:17  luytest  阅读(76)  评论(0编辑  收藏  举报