加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – Razor部分视图不渲染

发布时间:2020-12-16 09:15:11 所属栏目:asp.Net 来源:网络整理
导读:如果我使用以下Controller方法: public ActionResult Menu(){ // do stuff... return PartialView("viewName",navLinks);} 在_Layout.cshtml中调用局部视图,如下所示: div id="categories" @{ Html.Action("Menu","Nav"); }/div 使用以下ASCX局部视图: %@
如果我使用以下Controller方法:

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(…)(不带@)会正常调用该方法,但不会对其返回值执行任何操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读