2011-01-10 14 views
7

Dla pól w moim widoku ASP.NET MVC, które zostały przypisane zgodnie z wymaganiami, czy istnieje sposób, aby struktura automatycznie renderowała jakiś wskaźnik, że pole jest oznaczone jako wymagane w metadanych?Wymagany wskaźnik pola ASP.NET MVC

Odpowiedz

13

Powinny być w stanie to zrobić z CSS od MVC3 dodaje w tych niestandardowych atrybutów elementu:

<input data-val="true" data-val-required="The Username field is required." id="Username" name="Username" type="text" value="" /> 

Można OFF dane-Val-wymaganego w CSS tak:

wejściowego [dane-Val-required] {background: czerwony } lub ustawić obraz tła gwiazdką itp

+0

Dodaje go tylko z javascript. –

+0

Po prostu uznałem to za przydatne. – KTF

+0

Bardzo sprytnie, uwielbiam takie odpowiedzi –

12

zrobiłem w ten sposób, ponieważ moi wymagane pola muszą być dynamiczne (zdefiniowanego w pliku konfiguracyjnym)

Dodaj na końcu swojej Widok:

<script type="text/javascript"> 
     $('input[type=text]').each(function() { 
      var req = $(this).attr('data-val-required'); 
      if (undefined != req) { 
       var label = $('label[for="' + $(this).attr('id') + '"]'); 
       var text = label.text(); 
       if (text.length > 0) { 
        label.append('<span style="color:red"> *</span>'); 
       } 
      } 
     }); 
    </script> 
+0

M.A.G.I.C: D Dzięki! – Stian

+0

Niesamowity sos. Działa to świetnie - dzięki! Zobacz mój komentarz poniżej dla rozszerzenia, które zawiera więcej typów pól. – dadwithkids

+0

Sugerowałbym umieszczenie tego w $ (document) .ready – shlgug

0

Dodanie atrybutu HTML nie jest wystarczające. Spowoduje to tylko błąd sprawdzania poprawności javascript. Jeśli chcesz wskazać, że pole jest wymagane, prawdopodobnie chcesz dodać do niego gwiazdkę. Możesz to zrobić za pomocą metody extenssion programu HtmlHelper. Można znaleźć dokładnego wyjaśnienia tutaj

Indicating required field in MVC application

4

Oto jeden, który będzie dołączać czerwoną gwiazdką na prawej stronie Wszystko z atrybutu „dane-Val-wymaganego”.

<script type="text/javascript"> 
    $('[data-val-required]').after('<span style="color:red; font-size: 20px; vertical-align: middle;"> *</span>'); 
</script> 
3

I zmodyfikowana odpowiedź Renato Saito zawierać więcej typów Field (wszystkie rodzaje wejść i wybierz list) i używać nazw jQuery zamiast generycznego $. Oto moja wersja:

<script type="text/javascript"> 
// add indicator to required fields 
jQuery('input,select').each(function() { 
    var req = jQuery(this).attr('data-val-required'); 
    if (undefined != req) { 
     var label = jQuery('label[for="' + jQuery(this).attr('id') + '"]'); 
     var text = label.text(); 
     if (text.length > 0) { 
      label.append('<span style="color:red"> *</span>'); 
     } 
    } 
}); 
</script> 
0

Mała modyfikacja jest wykonywana z mojej strony. Właściwie miałem klucze podstawowe (Kolumny tożsamości w DB). Tego nie chcę podkreślać. Więc użyłem poniższego fragmentu kodu, aby wybrać tylko pola input[type=text], które mają wymagany atrybut w adnotacji.

$("[data-val-required]").not(":hidden").not(":radio").not(":checkbox").after('<span style="color:red;max-width:10px;min-height:30px;">*</span>'); 
Powiązane problemy