.net core MVC中级教程(四)

1、弥补上一篇的两个bug
2、介绍与使用DATA ANNOTAIONShtml

1、弥补上一篇的两个bug

上一篇有两个bug,分别是建立新学生后ID为0,刷新建立后信息界面发现会反复提交其数据,这是为啥
在这里插入图片描述
注意上面这个url地址/Home/Create
这么说就是咱们还处于Create建立的页面,并无跳转到Detail界面,并且Create.cshtml页面中的数据模板是StudentCreateViewModel,没有Id属性。因此为零
这怎么作?
在Homeconreoller中
在这里插入图片描述
这么作会返回的是Detail这个url,其中id是newstudent.Id
在EfCoreRepository中应当反回的是model
在这里插入图片描述
由于数据库保存的是model,因此也只会对model中的Id属性进行自增,若是返回的是student的话Id会是零
ok,bug解决git

2、介绍与使用DATA ANNOTAIONS

简单说下用于验证数据
在这里插入图片描述
在这里插入图片描述github

如今咱们先对Create视图改变下web

@using TutorialStudy.Model
@model TutorialStudy.Views.ViewModel.StudentCreateViewModel

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>添加学生</title>
</head>
<body>
<form method="post">
    <h1>建立一个学生</h1>
    <div>
        <label asp-for="FirstName"></label>
        <input asp-for="FirstName"/>
    </div>
    <div>
        <label asp-for="LastName"></label>
        <input asp-for="LastName" />
    </div>
    <div>
        <label asp-for="BirthDate"></label>
        <input asp-for="BirthDate" type="date" />
    </div>
    <div>
        <label asp-for="Gender"></label>
        <select asp-for="Gender" asp-items="Html.GetEnumSelectList<Gender>()"></select>
    </div>
    <button type="submit">添加</button>
</form>
</body>
</html>

运行看看
在这里插入图片描述
在这里你能够不输入什么直接保存,就是空值,也会保存到数据库中,接下来咱们要面对这个问题数据库

打开咱们的viewmodel中的StudentCreateViewModelmvc

using System;
using System.ComponentModel.DataAnnotations;
using TutorialStudy.Model;

namespace TutorialStudy.Views.ViewModel
{
    public class StudentCreateViewModel
    {
        //Required指定须要数据字段值
        [Display(Name = "姓"),Required,]
        public string LastName { get; set; }

        //MaxLength字符最大长度
        [Display(Name = "名"),Required,MaxLength(10)]
        public string FirstName { get; set; }

        [Display(Name = "性别")]
        public Gender Gender { get; set; }

        [Display(Name = "出生日期")]
        public DateTime BirthDate { get; set; }
    }
}

这就是对数据添加约束还有取名
然而这样作只有Name有效会输出到界面,然而咱们还要判断数据满不知足条件,
在HoemController中
在这里插入图片描述
这句话改成这样,会发现咱们运行后输入空值什么都没有发生,只是感受刷新了一下
一样也没有录入数据库
在这里插入图片描述
还有上面这个问题
上面那个我记得是是夸大请求伪造
Httppost常出现,为避免
RequestVerificationTokensvg

修改create.cshtml代码post

@using TutorialStudy.Model
@model TutorialStudy.Views.ViewModel.StudentCreateViewModel

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>添加学生</title>
</head>
<body>
<form method="post">
    <h1>建立一个学生</h1>
    <div>
        <label asp-for="FirstName"></label>
        <input asp-for="FirstName"/>
        <span asp-validation-for="FirstName"></span>
    </div>
    <div>
        <label asp-for="LastName"></label>
        <input asp-for="LastName" />
        <span asp-validation-for="LastName"></span>
    </div>
    <div>
        <label asp-for="BirthDate"></label>
        <input asp-for="BirthDate" type="date" />
        <span asp-validation-for="BirthDate"></span>
    </div>
    <div>
        <label asp-for="Gender"></label>
        <select asp-for="Gender" asp-items="Html.GetEnumSelectList<Gender>()"></select>
        <span asp-validation-for="Gender"></span>
    </div>
    <button type="submit">添加</button>
</form>
</body>
</html>

运行,直接什么都不填,直接添加
在这里插入图片描述
这样就会有提示
ok!
github地址
https://github.com/1045683477/.net-core-mvc-intermediateui

相关文章
相关标签/搜索