MVC中@Html.Action的用法(类似自定义控件)
MVC项目中如果有公共部分的代码就可以单独拿出来作为控件来用(比如头部和底部代码)。跟ASP.NET中的ASCX实现的效果一样,但MVC比它方便的多。
想要实现该效果,需要知道@Html.Action的用法。
@Html.Action有很多的构造方法在这里我只说一种也是经常用到的,@Html.Action("视图","控制器")的用法。首先我先创建一个控制器DaohangController.cs再在该控制器里添加一个视图方法RightDH,同时在Views文件夹里添加相应的cshtml页面。这个时候就创建好了一个可以运行的RightDH页面,
可以直接访问(/Daohang/RightDH),看一下是否可以正常的访问。如果可以正常的访问,看下一步,在你想要调用的页面调用RightDH页面(代码:@Html.Action("RightDH", "Daohang")),这个时候运行你调用该视图的页面,就会看到RightDH页面的信息已经被调用过来了。
是不是很简单,呵呵
说到这儿我说一下_ViewStart.cshtml这个文件,在MVC里都会看到这个页面的存在,这个是页面是不可访问的,但是你访问MVC里的每个页面的时候,程序都会先访问_ViewStart.cshtml页面然后才是你要访问的页面。这就有一个好处,一些公共的html代码可以放到_ViewStart.cshtml文件里。
然后就是母版页,引用了母板页也就继承了母板页的所有代码,所以你可以把写好的头部和底部代码写成控件的方式,然后在母板页里面调用该控件(用@Html.Action调用控件),然后让其他页面继承母板页,这样就区分开公共部分和非公共部分。也达到了代码重用的效果。
那么怎么继承母板页呢,有两个办法:1就是在创建页面的时候直接继承。2.直接在页面的顶部加上
@{
Layout = "~/Views/Shared/HeadFoot.cshtml";
}
红色部分就是母板页地址,在创建的页面里的内容都会替换到母板页里@RenderBody()的部分