2015-01-25 2 views
0

EDIT:конфликтов «модель» с объявлением модель

<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'

+0

Не связанный, но его просто '@if (Model.AuditDate.HasValue) {' –

+0

Уверены ли вы, что у вас нет чего-то типа '@ Html.DisplayFor (Model => Model.SomeProperty)' где-то еще в вашем вид (столица M)? –

+0

«Модель» - это зарезервированное ключевое слово в представлении (вы не можете использовать его в выражении лямбда), поэтому используйте '@ Html.DisplayFor (m => m.FaxNumber)' и т. Д. –

ответ

0

Вы используете Model keword в следующем заявлении

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

и вы также с помощью 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, хотя он может быть x или model (нижний регистр) или что-либо кроме Model)

Обратите внимание, что его просто @if (Model.AuditDate.HasValue), n ot @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, ничего не будет отображаться.

+0

sigh! ... Я получил его сейчас, поэтому мне нужно было использовать во всем представлении вместо «Модели» используйте «m» или «model» или «нет», и когда дело доходит до выполнения каких-либо проверок, просто используйте «Модель», спасибо за вашу помощь - :) –

Смежные вопросы