如果我使用以下Controller方法: public ActionResult Menu(){ // do stuff... return PartialView("viewName", navLinks);} 在_Layout.cshtml中调用局部视图,如下所示: div id="categories" @{ Html.Action("Menu", "Nav"); }/div 使
public ActionResult Menu()
{
// do stuff...
return PartialView("viewName", navLinks);
}
在_Layout.cshtml中调用局部视图,如下所示:
<div id="categories">
@{ Html.Action("Menu", "Nav"); }
</div>
使用以下ASCX局部视图:
<%@ Control Language="C#"
Inherits="ViewUserController<IEnumerable<MyDataType>>" %>
<% foreach(var link in Model) { %>
<%: Html.Route.Link(link.Text, link.RouteValues) %>
<% } %>
一切正常.好极了.
但是,如果我使用以下任一RAZOR部分视图:
@model IEnumerable<MyDataType>
@foreach(var link in Model){
Html.RouteLink(link.Text, link.RouteValues);
}
要么…
@model IEnumerable<MyDataType>
@{
Layout = null;
}
@foreach(var link in Model){
Html.RouteLink(link.Text, link.RouteValues);
}
我一无所获.抛出没有异常,我只是没有得到任何渲染.我知道问题不在于控制器方法(它在ASCX局部视图中效果很好).
这里发生了什么?
RenderAction方法将操作直接写入视图并返回void.Action方法返回操作的内容,但不向视图写入任何内容.
编写@something会将某些内容的值打印到页面上.
你不能写@ Html.RenderAction,因为RenderAction不会返回任何内容.
编写Html.Action(…)(不带@)会正常调用该方法,但不会对其返回值执行任何操作.
