'Model' 与声明模型冲突

'Model' conflicts with the declaration Model

编辑:

<p>
  <span class="strong">Fax Number:</span>&nbsp 
  @Html.DisplayFor(Model => Model.FaxNumber)
</p>
<p>
  <span class="strong">Contact Name:</span>&nbsp 
  @Html.DisplayFor(Model => Model.ContactFirstName) &nbsp
  @Html.DisplayFor(Model => Model.ContactLastName)
</p>
<p>
  <span class="strong">Contact Audit Date:</span>&nbsp
  @if (item.AuditDate.HasValue != null)
  {
    @Html.DisplayFor(x => x.AuditDate.Value.ToString("d"))
  }

我花了很多时间试图弄清楚为什么我会收到这个错误并且我已经扫描了网络但没有得到任何解决方案,我正在尝试检查该值是否为空但我出现以下错误:

在我看来:

@model myapp.Models.Employee

@if(Model.AuditDate.HasValue !=null) <<<< getting error on Model here
{  
     @Html.DisplayFor(x => x.AuditDate.Value.ToString("d"))
};

'Model' conflicts with the declaration 'System.Web.Mvc.WebViewPage.Model'

您在以下语句中使用了 Model 关键字

@if (Model.AuditDate.HasValue != null)

并且您还在 lambda 表达式中使用了 Model 关键字作为导致错误的 @Html.DisplayFor() 助手。请注意,如果您将 if 语句放在所有 DisplayFor 助手之前,您将得到不同的错误

A local variable named 'Model' cannot be declared in this scope because it would give a different meaning to 'Model` ...

将您的代码更改为

<p>
  <span class="strong">Fax Number:</span>&nbsp 
  @Html.DisplayFor(m => m.FaxNumber)
</p>
<p>
<span class="strong">Contact Name:</span>&nbsp 
  @Html.DisplayFor(m => m.ContactFirstName)&nbsp
  @Html.DisplayFor(m => m.ContactLastName)
</p>
<p>
  <span class="strong">Contact Audit Date:</span>&nbsp
  @if (Model.AuditDate.HasValue)
  {
    @Html.DisplayFor(x => x.AuditDate.Value.ToString("d"))
  }
</p>

请注意在帮助程序中使用 m 而不是 Model,尽管它可能是 xmodel(小写)或除 [=13= 之外的任何内容])

另请注意,它只是 @if (Model.AuditDate.HasValue),而不是 @if (Model.AuditDate.HasValue != null)

但是最好使用 DisplayAttribute

来定义格式
[DisplayFormat(DataFormatString = "{0:dd MMMM yyyy"})]
public DateTime? AuditDate { get; set; }

并且只使用 @Html.DisplayFor(m => m.AuditDate)if 块不是必需的。如果AuditDate有值,则按照格式渲染,否则如果null,什么都不渲染。