2011-03-09 41 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 }); 
}