控制器中直接return View(),将返回和控制器方法名一样的视图
return View("viewName"),将返回和控制器对应的视图目录下的viewName视图
也可以指定完全位于不同目录结构张的视图,可以使用带~符号的语法来提供完整的视图,必须提供视图的文件扩展名
return View("~/Views/Example/Index.cshtml")
HTML视图辅助方法:
Partial,RenderPartial:
2个方法功能相似,都是返回部分视图,但是RenderPartial是直接将内容写入响应流,所以必须把RenderPartial放入代码块中
例: @Html.Partial("~/Views/Home/ViewUserControl1.cshtml",model)
@{Html.RenderPartial("~/Views/Home/ViewUserControl1.cshtml",model); }
也可以相对定位,和View的方式一样
Action,RenderAction:
区别和Partial,RenderPartial一样,功能调用一个控制器方法,返回一个视图,Action和Partial相比,可以利用控制器上下文
控制器代码:
public class HomeController : Controller { public ActionResult Index() { return View(); } [ChildActionOnly] public ActionResult Menu() { var menu = GetMenuFromSomewhere(); return PartialView(menu); } }
menu.cshtml有对应html视图
Index.cshtml视图中,可以调用Menu操作来显示菜单:
@Html.Action("Menu")
ChildActinOnly特性防止了运行时通过一个URL来调用Menu操作,只能通过Action或者RenderAction来调用操作,ChildActinOnly不是必须的,但是通常在进行子操作时推荐使用
在ASP.NET MVC3中,在ControllerContext中也有一个成为IsChildAction的新属性,判断是否是Acton调用
可以给Action传递第二个参数来传递值
@Html.Action("Menu",new{options= MenuOptions{Width=400,Height=500})
对应的Menu操作
public ActionResult Menu(MenuOptions options){
return PartialView(options);
}
可以给方法加上ActionName特性改变优先调用名
[ActionName("CoolMenu")]
这样调用时候就要使用@Html.Action("CoolMenu")