检查VS生产的编辑方法和编辑窗体
前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了。这篇的话就简单的看下它默认实现的代码,VS终归强大,但是方便的同时也是在弱化我们,当然大牛级别的这样搞是为了效率,我们新手的话还是建议不要去偷那个懒,至于为什么?不解释啦.....
我们打开我们的创建的实体对象Movie类,然后再ReleaseDate属性上添加一些标识特性,具体如下:
我们设置了一下ReleaseDate属性的通用属性还有它的类型以及它在Asp.net动态数据显示的格式。然后我们运行起来我们写的简单程序,效果如下:
这里有可以看到MVC的经典读取RoutConfig.cs路由机制,这个是不是类似{controller}/{action}/{id}.........,其实完成这一个动作的话页面上是有一个ActionLink的方法来辅助生产这么炫的html超链接标签,打开index.cshtml页面,我们看下MVC 独有的ActionLink,其面貌如下:
我们来看看:
@html.ActionLink("xxxx","xxxx",new{value1=item.A,value2=item.B}),多个参数之间用逗号隔开。
OK继续接着上面的程序跑起来的图我们继续走完这个编辑的流程,当我们点击Edit超链接一瞬间程序干的事情如下,流程效果如下:
然后你就会看到下面的页面:
同时也就是说在我们在首页点击编辑按钮时HTTP是以GET请求了Controller里的Edit方法,注意这里有两个Edit方法但是却别是非常大的,就代码直观上来说第一个Edit是负责接收Get请求Edit动作,而第二则负责接收Post请求的动作,第一个实际上干的事情就是你给我参数我把数据给你拿出来放到你的编辑页面,第二个Edit干的事情就是你对页面的数据做了修改然后要POST给我,我去给你负责保存在数据库中,这个是个人直观上解释。
大家可能会注意在POST的action方法上有这么一个标识,如下图:
其实开始才创建的时候我也觉得好奇,但是试验了好几个都会生产这么一个东西在Action上面,照这么说这应该是mvc4开始的一个改进的地方吧!这个标识属性其实就是为阻止伪造的请求,而这个Bind(Includ="x,x,x,x")做了一些什么事情,我们看看,其负责的事情如下:
说的通俗易懂点的话,它在这里就是负责绑定参数,不过这个参数是我们Model的属性名称。Controller里有阻止伪造请求,那么有伪造的数据了这么办,View层是不是应该有什么东西去和这个标识协调工作,我们打开Eidt.cshtml页面看看,其面貌如下:
我们就伪造的输入几个数据看看有什么效果,具体如下:
后续我们继续学习入门系列知识,目前为止都是VS帮我们干了不少的事情,我们都在学习生产的代码,后续我们来亲手做一个查询来亲自体验下过程。。。