将.ascx转换为razor语法时出现问题

将.ascx转换为razor语法时出现问题,razor,Razor,我在将.ascx模板转换为razor语法方面有很多问题。有人能帮我吗 @{ bool ShouldShow(ModelMetadata metadata) { return metadata.ShowForDisplay && metadata.ModelType != typeof(System.Data.EntityState) && !metadata.IsComplexType &&

我在将.ascx模板转换为razor语法方面有很多问题。有人能帮我吗

@{
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>
    } 
}
@{
bool ShouldShow(模型元数据){
return metadata.ShowForDisplay
&&metadata.ModelType!=typeof(System.Data.EntityState)
&&!metadata.IsComplexType
&&!ViewData.TemplateInfo.Visited(元数据);
}
}
@如果(Model==null){
ViewData.ModelMetadata.NullDisplayText
}否则如果(ViewData.TemplateInfo.TemplateDepth>1){
ViewData.ModelMetadata.SimpleDisplayText
}否则{
foreach(ViewData.ModelMetadata.Properties.Where(pm=>ShouldShow(pm))中的var prop){
if(项目隐藏周围TML){
Html.Display(prop.PropertyName)
}否则{
如果(!String.IsNullOrEmpty(prop.GetDisplayName())){
@prop.GetDisplayName()
} 
@Html.Display(prop.PropertyName)
} 
}
看起来上面的代码是正确的(至少从我的角度来看)

更新

我对ShouldShow方法没有任何智能感知!为什么?我有很多编译错误

错误1}预期路径\Object.cshtml 1 1项目 错误5命名空间不能直接包含字段或方法PATH\Object.cshtml 11 3 PROJ等成员 错误4类、结构或接口成员声明路径\Object.cshtml 11 1项目中的无效标记“}”
等等

要插入类级成员(例如您的
bool ShouldShow
),您需要使用。

您遇到了什么问题?有错误吗?如果是的话,你能把它寄出去吗?