01第1节:添加视图
ASP.NETMVC视图使用VisualStudio创建一个新的ASP.NETMVC5Web应用程序项目,然后再创建一个控制器,根据此控制器再创建相应的视图。
第一步:创建MVC5项目
打开VisualStudioIDE开发工具,创建一个ASP.NETMVCWeb应用程序,如下图所示:
图1
在.NET应用程序中,Web应用程序不仅仅是MVC,还有ASP.NETWebForm应用程序,这里要创建的是MVC应用程序。
图2
在上图中创建了一个名称为“Product”的控制器,并且默认还创建了一个操作方法Index()。
第二步:创建Show()方法
现在我们不使用默认的Index()方法,而是创建一个自己的操作方法,这里创建Show()操作方法:
图3
在ASP.NETMVC中,每个控制器在项目结构的“Views”文件夹中都会存在对应的子文件夹,用来存储该控制器下所有操作方法对应的视图。
图4
那么所有在Product控制器下存在的视图都必须放在“Views”“Product”文件夹中。
第三步:创建视图
现在给Product控制器中的Show()操作方法创建对应的默认视图:
图5
这里不使用布局页,如果选择“使用布局页”复选框,则创建的视图会引用_viewstart.cshtml布局页。
注意:这里指定的视图名称必须与Show()方法名相同,才能是默认视图,这是ASP.NETMVC框架的约定。
图6
创建的视图名称为Show.cshtml,可见,ASP.NETMVC的视图是以.cshtml为扩展名的。
这样一个视图就创建完成了,在此视图中输入一些内容。现在运行一下结果。
图7
在访问控制器的视图时,要注意URL上先写控制器的名称Product,再写操作方法名,使用/隔开。这样就可以访问到控制器中的视图了。
02第2节:返回默认视图
在ASP.NETMVC控制器的操作方法中,如果返回的View()方法是空参数,则就会在“Views”—“Product”文件夹下查找与方法名相同的视图,然后返回给用户。
图8
这样就会将默认视图Views\Show.cshtml返回,这也是常用的一种,形成对应关系,应用程序结构也清楚。
03第3节:返回指定名称的视图
在ASP.NETMVC中,有时候并不需要返回默认视图,而是返回指定的某个视图,这也是可以的。例如:可以根据操作方法参数的不同,返回不同的视图,这都是可以的。
在“Product”文件夹下创建一个名称为List.cshtml的视图:
图9
现在有了这个视图,我们需要访问Product()操作方法时,返回的是List.cshtml视图,则可以使用如下C#代码实现:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Mvc;namespaceWebApplication1.Controllers{publicclassProductController:Controller{publicActionResultShow(){returnView(List);}}}
注意:在给View()传递视图名称时,扩展名.cshtml是不需要的,如果写上就会出错。但该视图必须在对应控制器的文件夹中。
好了,上面的代码完成之后,定位到/Product/List页面,查看一下最终运行结果:
图10
在图10中,同样的URL地址,但是访问到的结果却是List.cshtml视图中的内容。
04第4节:返回指定路径的视图
在上面我们指定的视图都是按照ASP.NETMVC约定的规则来指定视图的。也可以指定Views文件夹下的其它路径下的视图。
注意:返回视图的路径中,必须是以~符号开头来返回视图的完整路径,并且视图也是必须放在“Views”文件夹下的,至于放在“Views”下的哪个子文件夹中,都是可以的。
在Show()方法中编写如下C#代码:
publicActionResultShow(){returnView(~/Views/Home/About.cshtml);//returnView(List);}
在上面的C#代码中,指定了带有路径的视图,路径中必须包括~/Views文件夹名称,否则找不到视图。还是运行结果吧:
图11
在图11中,同样的URL地址,访问到的页面内容是不一样的,这就是我们在ASP.NETMVC控制器的操作方法中改变了视图,从而访问到不同的的视图,从而呈现的结果也是不一样的。