Что не так с разметкой Razor? - PullRequest
0 голосов
/ 09 марта 2011

Я пытаюсь выучить MVC и использую примеры из "Pro ASP .net MVC 2". Только я пытаюсь все написать в MVC3.

Сначала у меня возникла проблема с @ Html.RenderAction, я изменил ее на @ Html.Action - это помогло. Теперь у меня проблема. Не могли бы вы сказать мне, почему ascx view работает, а 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 }
}) %>
<% } %>

Razor:

@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 ]

1 голос
/ 10 марта 2011

Метод Html.RouteLink возвращает IHtmlString.
. Он ничего не записывает на страницу.

Вам необходимо записать возвращенное значение IHtmlString на страницу, написав @Html.RouteLink(...).
Это эквивалент Razor <%: Html.RouteLink(...) %> на странице ASCX.

0 голосов
/ 10 марта 2011

Попробуйте это:

@model IEnumerable<SportsStore.WebUI.Models.NavLink>
@foreach (var link in Model)
{
   @Html.RouteLink(link.Text, link.RouteValues, new { @class = link.IsSelected ? "selected" : string.empty });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...