搜索

首页  >  问答  >  正文

总是觉得asp.net MVC 写着很别扭,对比PHP的mvc,asp.net 麻烦很多?

有同感的没有?

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 吧? 貌似看教程都是写的实体类

漂亮男人漂亮男人2750 天前676

全部回复(3)我来回复

  • 怪我咯

    怪我咯2017-05-16 17:08:17

    没写过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[]获取数据。

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 17:08:17

    在.Net中,你的$data可以用类型Dictionary<string, string>或者Dictionary<string, object>来描述。
    一点都不方便,在IDE里面没有自动完成提示,没有静态检查。

    回复
    0
  • 世界只因有你

    世界只因有你2017-05-16 17:08:17

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

    回复
    0
  • 取消回复