看过我之前写的
@Html.Action("ListPart", "Article", new { categoryID = 22, top = 10 })
上面Article的ListPart的代码在这里就省略了,下面是Article\ListPart.cshtml视图的内容
@model List
@{
Layout = null;
}
-@ViewBag.CateName更多
但是有时会用这样需求,需要在不同的页面调用添加不同的css类样式,而这个css类class的名字可以在调用的时候设置,这样就能够让这个局部的子Action放在任何的页面调用,只需要在css文件中添加设置的css类class相关的样式就可以了,这就让这个模块更加的灵活和易扩展。要实现这个其实也很简单,通过ASP.NET mvc视图访问RouteData的值。
首先,我们把之前的Article\ListPart.cshtml视图的内容理更改如下:
@model List
@{
Layout = null;
}
-@ViewBag.CateName更多
然后,在调用的地方通过下面的方式调用:
@Html.Action("ListPart", "Article", new { categoryID = 22, top = 10, className = "ml20" })
注意:我们在调用分页列表的时候多加了一个参数className,而这个参数的值你就可以通过所有的页面的要求指定不同的值。因为我们知道ASP.NET MVC中的请求参数基本上都会封装到RoutData中,所以视图中我们用@(this.ViewContext.RouteData.Values["className"])读取这个className参数的值并把这个动态的css类加了到div的样式中。
@Html.Action("ListPart", "Article", new { categoryID = 22, top = 10, className = "ml21" })
@Html.Action("ListPart", "Article", new { categoryID = 22, top = 10, className = "ml22" })
上面调用生成的html代码分别对应: