總是覺得asp.net MVC 寫著很彆扭,對比PHP的mvc,asp.net 麻煩很多?
漂亮男人
漂亮男人 2017-05-16 17:06:17
0
3
698

有同感的沒有?

mvc 到底要怎麼寫呢?

覺得寫很費勁

PHP:

M:
class Teacher {
  function add($data) {
    $sql = "insert into teacher_table($teacher_name) values($data['teacher_name'])";
    return $db->query($sql);
  }
}

V:
(省略)

C:
class Teacher {
  $data = array("teacher_name"=>$_POST["teacher_name"],....);
  $row = new Teacher();
  $row->add($data);
  echo "Yeah~!";
}

asp.net 沒有PHP那樣靈活的數組,m-v-c 之間資料交互傳遞都通過數組, asp.net總不能搞個hashtable 吧? 貌似看教程都是寫的實體類別

漂亮男人
漂亮男人

全部回覆(3)
刘奇

沒寫過php,但有ASP.NET MVC的開發經驗,這裡簡單地說一下自己的理解。
先透過一張圖來看ASP.NET MVC的互動原理:

Model層其實是一個很大的概念,包含了服務,業務邏輯,數據持久化等工作;Controller層則是一個起到一個連接Model層和View層的作用;View層就是界面,這點應該很清晰的。
透過你的問題描述,比較糾結的一點是Controller層和View層在做互動的時候,ASP.NET MVC採用的是定義實體類別(ViewModel)的方式,這讓你覺得ASP.NET MVC的開發方式很費勁。
其實這個問題是相對的,首先對ASP.NET MVC來說,基本上每一個視圖,都要定義一個ViewModel,這確實是一個讓人覺得很無趣的地方,但反觀它帶來的好處:配合Visual Studio,可以在視圖中使用智慧提示(關於智慧提示這裡就不多展開了,用過都說好)!這樣就可以避免php數組$data['xxx']中的魔幻字串問題(例如應該寫$data['teacher'],由於一不小心寫錯$data['teach'],帶來了更多出錯的可能,其實不覺得寫這些字串也是一件很無趣的事情嗎?
假如你覺得還是陣列的方式好,其實ASP.NET MVC中也是可以做到的,可以在Controller類別中使用TempData,例如:

public ActionResult List()
{
    TempData["hello"] = "world";
    return View();
}

這樣視圖層也可以透過TempData[]取得資料。

洪涛

在.Net中,你的$data可以用型別Dictionary或Dictionary來描述。
一點都不方便,在IDE裡面沒有自動完成提示,沒有靜態檢查。

世界只因有你

我用過很久的asp.net mvc,现在用phpyii,两者几乎完全一样的思想。所以不是说框架哪个更方便,而是语言哪个更方便。我个人也觉得php确实比C#要方便很多,就像你说的,数组灵活,json灵活,.net现在也有dynamic类型,但是不感冒,感觉生硬。另外一个抛弃微软的理由就是觉得太麻烦,太封闭,就是不愿意用windows,干嘛要用宇宙第一IDE(visual studio)?老子就是只愿意在linux下用vim,沒別的。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板