iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 6
2
Modern Web

ASP.NET MVC網頁程式介紹系列 第 6

[Day 06] ASP.NET MVC後端傳資料到前端介紹(二)

  • 分享至 

  • xImage
  •  

銜接昨天的例子,首先看Student就是一個Model,當然它不是MVC所謂的Model的全貌,應該說只是Model的一種,關於名詞在此就不深究

public class Student
{
    public string id { get; set; }
    public string name { get; set; }
    public int score { get; set; }
    public Student()
    {
        id = string.Empty;
        name = string.Empty;
        score = 0;
    }
    public Student(string _id, string _name, int _score)
    {
        id = _id;
        name = _name;
        score = _score;
    }
    public override string ToString()
    {
        return $"學號:{id}, 姓名:{name}, 分數:{score}.";
    }
}

通常應該是在Models資料夾另外建立一個cs檔案來放這個Model,不過在此就先偷懶一下直接跟Controller放在一起。

先看public string id { get; set; }這一行,這是C#提供的基本的Get(取資料)跟Set(設定資料)的方法,也有人會先定義一個private物件,再用public物件對這個private物件做Get跟Set,其實Get跟Set的方法可以有很多,不過沒時間去找這方面的資料,在此先不深究。

然後一般來說我們定義了一個class,比較好的習慣是要先給它預設值,所以我定義了兩個建構子

public Student()
{
    id = string.Empty;
    name = string.Empty;
    score = 0;
}

這個建構子是預設的建構子,如果完全不定義任何建構子,C#好像也會給它預設值,而且印象中跟我的預設值是一樣的,C#比較不會像C++會給一個奇怪的預設值,接下來又定義了一個建構子

public Student(string _id, string _name, int _score)
{
    id = _id;
    name = _name;
    score = _score;
}

這個建構子讓我可以直接在宣告物件的時候就帶入我要的值,可以把好幾行的程式縮在一行呼叫即可,如果沒有宣告這個建構子,原本應該是要這樣

Student student = new Student();
student.id = "1";
student.name = "小明";
student.score = 80;

有了這個建構子只要一行就可以了

Student student = new Student("1", "小明", 80);

那後面又宣告了一個ToString()方法

public override string ToString()
{
    return $"學號:{id}, 姓名:{name}, 分數:{score}.";
}

在C#當中所有的物件都可以使用ToString()方法,但是一般預設的ToString出來的一定不是我想要的,所以在這裡可以將原本定義的ToString()覆蓋過去,就可以按自己要的方式來顯示內容,如果沒有定義ToString方法,原本出來的畫面會變成這樣
https://ithelp.ithome.com.tw/upload/images/20171215/20105694zKbDwCZs1g.jpg

連專案的路徑都寫進去了,如果定義了以上的ToString方法,就會顯示出昨天那個圖
https://ithelp.ithome.com.tw/upload/images/20171215/20105694ZCBWcbw8ek.jpg

今天大概分享到這邊吧,明天再繼續分析同樣的程式


上一篇
[Day 05] ASP.NET MVC後端傳資料到前端介紹(一)
下一篇
[Day 07] ASP.NET MVC後端傳資料到前端介紹(三)
系列文
ASP.NET MVC網頁程式介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言