#razor
#razor
Вопрос:
У меня много проблем с преобразованием шаблонов .ascx в синтаксис razor. Кто-нибудь может мне помочь?
@{
bool ShouldShow(ModelMetadata metadata) {
return metadata.ShowForDisplay
amp;amp; metadata.ModelType != typeof(System.Data.EntityState)
amp;amp; !metadata.IsComplexType
amp;amp; !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>
}
}
Кажется, приведенный выше код правильный (по крайней мере, с моей точки зрения).
Обновить
У меня нет никакого intellisense для метода ShouldShow! почему? У меня много ошибок компиляции.
Ошибка 1 } ожидаемый ПУТЬ Object.cshtml 1 1 PROJ Ошибка 5 Пространство имен не может напрямую содержать элементы, такие как поля или методы PATHObject.cshtml 11 3 PROJ Ошибка 4 Недопустимый токен ‘}’ в пути объявления класса, структуры или элемента интерфейса Object.cshtml 11 1 PROJ и так далее!
Комментарии:
1. В чем проблема, с которой вы столкнулись? Есть ли ошибка? Если да, можете ли вы опубликовать это?
Ответ №1:
Чтобы вставить элементы уровня класса (такие как ваш bool ShouldShow
), вам нужно использовать @functions
блок.