2012-03-25 24 views

Odpowiedz

6

Metoda pomocnicza EditorFor jest nieco ograniczona po wyjęciu z pudełka i nie wydaje się jeszcze obsługiwać atrybutu HTML5 type="email".

Twoje opcje w tej chwili wydają się być albo używanie TextBoxFor lub tworzenie niestandardowego szablonu, który pozwoli ci ustawić atrybut wejściowy type. Oto another thread, który sprawdza niektóre opcje tworzenia własnych szablonów.

Urządzenie DataAnnotation [DataType(DataType.EmailAddress)] jest całkiem przydatne. Ustawia on id i name w polu formularza na email, którego można używać z walidacją jQuery do wyświetlania komunikatów sprawdzania poprawności po stronie klienta. Zastosowanie klasy DataAnnotation do klasy modelu oznacza również, że właściwość e-mail w modelu zostanie automatycznie sprawdzona po stronie serwera. Jeśli włączysz dyskretne sprawdzanie poprawności w swojej aplikacji, uzyskasz walidację po stronie klienta i po stronie serwera bezpłatnie.

+0

nie można tego dokonać nawet z TextBoxFor –

13

można zastąpić atrybuty HTML, do którego przeglądarka Przenieś się type='text' jeśli one nie obsługują:

@Html.TextBoxFor(m => m.Email, new { @type = "email" })

6

wydaje się być obecnie obsługiwane.

@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control", @type = "email" } }) 
3

Jako dodatek do jortizromo „s odpowiedź, masz teraz co najmniej dwie opcje:

  1. Określanie @type w parametrze htmlAttributes dla metody EditorFor() jak w

    @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @type = "email" } }) 
    
  2. Korzystanie z atrybutu adnotacji od System.ComponentModel.DataAnnotations nazw w definicji klasy model dla odpowiedniego Email mienia i prostego wywołania metody EditorFor() (to zapewnia znaczniki danych walidacja HTML, który może być dobrym lub złym pomysłem w zależności od zadania), jak w

    ViewModel

    [EmailAddress] 
    public string Email { get; set; } 
    

    Razor Zobacz

    @Html.EditorFor(model => model.Email) 
    
Powiązane problemy