Проблема с преобразованием .ascx в синтаксис бритвы - PullRequest
0 голосов
/ 26 апреля 2011

У меня много проблем с преобразованием шаблонов .ascx в синтаксис бритвы. Кто-нибудь может мне помочь?

@{
bool ShouldShow(ModelMetadata metadata) {
    return metadata.ShowForDisplay
        && metadata.ModelType != typeof(System.Data.EntityState)
        && !metadata.IsComplexType
        && !ViewData.TemplateInfo.Visited(metadata);
    }
}

@if (Model == null) { 
    ViewData.ModelMetadata.NullDisplayText
} else if (ViewData.TemplateInfo.TemplateDepth > 1) {
    ViewData.ModelMetadata.SimpleDisplayText
} else {
    foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => ShouldShow(pm))) {
    if (prop.HideSurroundingHtml) {
        Html.Display(prop.PropertyName)
    } else {
        if (!String.IsNullOrEmpty(prop.GetDisplayName())) {
            <div class="display-label">@prop.GetDisplayName()</div>
        } 
        <div class="display-field">@Html.Display(prop.PropertyName)</div>
    } 
}

Кажется, код выше верен (по крайней мере, с моей точки зрения).

UPDATE

У меня нет смысла для метода ShouldShow! Зачем? У меня много ошибок компиляции.

Ошибка 1} ожидается PATH \ Object.cshtml 1 1 PROJ Ошибка 5 Пространство имен не может напрямую содержать элементы, такие как поля или методы PATH \ Object.cshtml 11 3 PROJ Ошибка 4 Неверный токен '}' в объявлении члена класса, структуры или интерфейса PATH \ Object.cshtml 11 1 PROJ и так далее!

1 Ответ

1 голос
/ 27 апреля 2011

Чтобы вставить членов класса (например, bool ShouldShow), вам нужно использовать @functions блок .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...