我正在尝试学习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 } });
}
答案 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 });
}