Razor标记有什么问题?

时间:2011-03-09 20:10:44

标签: asp.net-mvc-3 razor

我正在尝试学习MVC并使用“Pro ASP .net MVC 2”中的样本。只有我想在MVC3中编写所有内容。

首先我遇到了@ Html.RenderAction的问题,我将其更改为@ Html.Action - 它完成了诀窍。 现在我有一个问题。你能告诉我为什么ascx视图有效,类似的Razor没有?

ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<SportsStore.WebUI.Models.NavLink>>" %>

<% foreach (var link in Model) { %>
<%: Html.RouteLink(link.Text, link.RouteValues, new Dictionary<string, object> {
    { "class", link.IsSelected ? "selected" : null }
}) %>
<% } %>

剃刀:

@model IEnumerable<SportsStore.WebUI.Models.NavLink>
@foreach (var link in Model)
{
   Html.RouteLink(link.Text, link.RouteValues, new Dictionary<string, object> { {    "class", link.IsSelected ? "selected" : null } });
}

2 个答案:

答案 0 :(得分:1)

Html.RouteLink方法返回IHtmlString 它不会向页面写任何内容。

您需要通过撰写IHtmlString将返回的@Html.RouteLink(...)写入页面 这是Razor等同于ASCX页面中的<%: Html.RouteLink(...) %>

答案 1 :(得分:0)

试试这个:

@model IEnumerable<SportsStore.WebUI.Models.NavLink>
@foreach (var link in Model)
{
   @Html.RouteLink(link.Text, link.RouteValues, new { @class = link.IsSelected ? "selected" : string.empty });
}