ASP.NET MVC3 视图查找

控制器中直接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")

原文地址:https://www.cnblogs.com/FlyCat/p/2622857.html