'型号'与声明模型冲突

时间:2015-01-25 22:31:10

标签: asp.net-mvc asp.net-mvc-4

编辑:

<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"))
  }

我花了很多时间试图搞清楚为什么我收到这个错误并且我扫描了网但没有得到任何解决方案,我正在检查看看该值是否为null但我是收到以下错误:

在我看来:

@model myapp.Models.Employee

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

'Model'与声明冲突   'System.Web.Mvc.WebViewPage.Model'

1 个答案:

答案 0 :(得分:0)

您正在使用以下声明中的Model关键字

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

并且您还在lambda表达式中使用Model关键字来导致错误的@Html.DisplayFor()帮助程序。请注意,如果您将if语句放在所有DisplayFor帮助程序之前,则会出现其他错误

  

在此范围内无法声明名为“Model”的局部变量,因为它会给“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(小写)或除Model之外的任何内容)

另请注意,它只是@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,则不会呈现任何内容。