2012-06-20 20 views
6

mam klasę modelu podobny do następującego:Wyświetlana nazwa na modelu nie jest wyświetlana?

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

[System.Runtime.Serialization.DataContract(IsReference = true)] 
[System.ComponentModel.DataAnnotations.ScaffoldTable(true)] 
public class TestModel 
{ 
    [Display(Name="Schedule Name")] 
    [Required] 
    public string scheduleName; 
} 

A w moim pliku .cshtml mam:

 <li> 
      @Html.LabelFor(m => m.scheduleName) 
      @Html.TextBoxFor(m => m.scheduleName, Model.scheduleName) 
      @Html.ValidationMessageFor(m => m.scheduleName) 
     </li> 

Ale z jakiegoś powodu nazywam ekran nie jest wyświetlany (pokazy label "scheduleName")

Przysięgam, że mam ten sam kod w innych klasach i wygląda na to, że wygląda dobrze. Czy ktokolwiek może wskazać powód, dla którego to nie zadziałałoby?

+0

zbuduj swój projekt i spróbuj ponownie – Shyju

+0

@Shyju dziękuję, ale wielokrotnie przebudowałem projekt (mam problem od wielu dni i właśnie zdecydowałem się zwrócić o pomoc). – Kyle

Odpowiedz

7

The DataAnnotationsModelMetadataProvider działa na właściwości. Twoja scheduleName powinna być własnością, a nie "tylko" polem.

[System.Runtime.Serialization.DataContract(IsReference = true)] 
[System.ComponentModel.DataAnnotations.ScaffoldTable(true)] 
public class TestModel 
{ 
    [Display(Name="Schedule Name")] 
    [Required] 
    public string scheduleName { get; set; } 
} 

Uwaga: Zgodnie z C# konwencji nazewnictwa wasze imiona i usługi powinny być PascalCased.

+0

Masz na myśli Pascal-cased; jest już wielbłądowy. – HackedByChinese

+1

Ach, udało się. Nie zdawałem sobie sprawy, że musi to być własność, a nie pole. – Kyle

+0

@HackedByChinese dobry połów, naprawiony :) – nemesv

Powiązane problemy