Geht es dir genauso?
Wie schreibe ich MVC?
Mir f?llt das Schreiben sehr schwer
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 verfügt nicht über ein so flexibles Array wie PHP. Der Datenaustausch zwischen m-v-c wird über das Array geleitet, oder? Es scheint, dass es in den Tutorials ausschlie?lich um das Schreiben von Entit?tsklassen geht
沒寫過php,但有ASP.NET MVC的開發(fā)經(jīng)驗,這里簡單地說一下自己的理解。
首先通過一張圖來看ASP.NET MVC的一個交互原理:
Model層其實是一個很大的概念,包含了服務,業(yè)務邏輯,數(shù)據(jù)持久化等工作;Controller層則是一個起到一個連接Model層和View層的作用;View層就是界面,這點應該很清晰的。
通過你的問題描述,比較糾結的一點是Controller層和View層在做交互的時候,ASP.NET MVC采用的是定義實體類(ViewModel)的方式,這讓你覺得ASP.NET MVC的開發(fā)方式很費勁。
其實這個問題是相對的,首先對于ASP.NET MVC來說,基本上每一個視圖,都要定義一個ViewModel,這確實是一個讓人覺得很無趣的地方,但反觀它帶來的好處:配合Visual Studio,可以在視圖中使用智能提示(關于智能提示這里就不多展開了,用過都說好)!這樣就可以避免php數(shù)組$data['xxx']中的魔幻字符串問題(例如應該寫$data['teacher'],由于一不小心寫錯$data['teach'],帶來了更多出錯的可能,其實不覺得寫這些字符串也是一件很無趣的事情嗎?)。
假如你覺得還是數(shù)組的方式好,其實ASP.NET MVC中也是可以做到的,可以在Controller類中使用TempData,例如:
public ActionResult List()
{
TempData["hello"] = "world";
return View();
}
這樣視圖層也可以通過TempData[]獲取數(shù)據(jù)。
在.Net中,你的$data可以用類型Dictionary<string, string>或者Dictionary<string, object>來描述。
一點都不方便,在IDE里面沒有自動完成提示,沒有靜態(tài)檢查。
我用過很長時間的asp.net mvc
,現(xiàn)在用php
的yii
,兩者幾乎完全一樣的思想。所以不是說框架哪個更方便,而是語言哪個更方便。我個人也覺得php
確實比C#
要方便很多,就像你說的,數(shù)組靈活,json
靈活,.net
現(xiàn)在也有dynamic
類型,但是不感冒,感覺生硬。另外一個拋棄微軟的理由就是覺得太麻煩,太封閉,就是不愿意用windows
,干嘛要用宇宙第一IDE(visual studio)?老子就是只愿意在linux
下用vim
,沒別的。