.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

相關文章
相關標籤/搜索