2011-03-09 42 views
0

我努力学习MVC和使用的样品从“临ASP .NET MVC 2”。只有我试图在MVC3中编写所有内容。剃刀标记有什么问题?

第一我有一些问题,@ Html.RenderAction的事情,我把它改为@ Html.Action - 它的伎俩。 现在我有一个问题。你能告诉我为什么ascx视图能起作用,而类似剃刀不能用?

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 } }); 
} 

回答

1

Html.RouteLink方法返回IHtmlString
它不写任何东西到页面。

你需要通过写@Html.RouteLink(...)写回到IHtmlString页面。
这是Razor的等同于ASCX页的<%: Html.RouteLink(...) %>

+0

我没有得到它...你能告诉我片断? – Agzam 2011-03-09 21:34:29

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 }); 
}