编辑:
<p>
<span class="strong">Fax Number:</span> 
@Html.DisplayFor(Model => Model.FaxNumber)
</p>
<p>
<span class="strong">Contact Name:</span> 
@Html.DisplayFor(Model => Model.ContactFirstName)  
@Html.DisplayFor(Model => Model.ContactLastName)
</p>
<p>
<span class="strong">Contact Audit Date:</span> 
@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'
答案 0 :(得分:0)
您正在使用以下声明中的Model
关键字
@if (Model.AuditDate.HasValue != null)
并且您还在lambda表达式中使用Model
关键字来导致错误的@Html.DisplayFor()
帮助程序。请注意,如果您将if
语句放在所有DisplayFor
帮助程序之前,则会出现其他错误
在此范围内无法声明名为“Model”的局部变量,因为它会给“Model”赋予不同的含义......
将代码更改为
<p>
<span class="strong">Fax Number:</span> 
@Html.DisplayFor(m => m.FaxNumber)
</p>
<p>
<span class="strong">Contact Name:</span> 
@Html.DisplayFor(m => m.ContactFirstName) 
@Html.DisplayFor(m => m.ContactLastName)
</p>
<p>
<span class="strong">Contact Audit Date:</span> 
@if (Model.AuditDate.HasValue)
{
@Html.DisplayFor(x => x.AuditDate.Value.ToString("d"))
}
</p>
请注意在帮助程序中使用m
而不是Model
,尽管它可以是x
或model
(小写)或除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
,则不会呈现任何内容。