为什么asp.net-mvc-3的Razor视图不显示长尾词?

2026-03-30 12:051阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计310个文字,预计阅读时间需要2分钟。

为什么asp.net-mvc-3的Razor视图不显示长尾词?

若我使用以下Controller方法:public ActionResult Menu() { // do stuff... return PartialView(viewName, navLinks); } 在_Layout.cs中调用局部视图,如下所示:div id=categories @Html.Action(Menu, Nav) /div

为什么asp.net-mvc-3的Razor视图不显示长尾词?

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

本文共计310个文字,预计阅读时间需要2分钟。

为什么asp.net-mvc-3的Razor视图不显示长尾词?

若我使用以下Controller方法:public ActionResult Menu() { // do stuff... return PartialView(viewName, navLinks); } 在_Layout.cs中调用局部视图,如下所示:div id=categories @Html.Action(Menu, Nav) /div

为什么asp.net-mvc-3的Razor视图不显示长尾词?

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