2017-10-18 3 views
2

Je voudrais différencier une date à un DateTime comme:Date de Distinct et DateTime dans l'application MVC.net

public class ViewModel { 
    public Date Date { get; set; } 
    public DateTime DateTime { get; set; } 
} 

À mon avis, je voudrais appeler ceci:

@Html.EditorFor(p => Model.Date) 
@Html.EditorFor(p => Model.DateTime) 

pour rendre :

<input data-val="true" data-rule-date="true" data-val-date="Must be a date." type="date" value="" aria-describedby="field-error"/> 
<input data-val="true" data-rule-datetime="true" data-val-date="Must be a datetime." type="datetime" value="" aria-describedby="field-error"/> 

La raison pour laquelle je veux ce faire, est d'avoir 2 méthodes de plugins differents initialisation et de validation, en utilisant datepi cker et jquery valident les plugins, comme:

<script type="text/javascript"> 
    $.validator.addMethod("date", function(value, element) { [date validation code] }); 
    $("[type='date']").datepicker({ format:"dd/MM/yyyy" }); 

    $.validator.addMethod("datetime", function(value, element) { [time validation code] }); 
    $("[type='datetime']").datetimepicker({ format:"dd/MM/yyyy HH:mm:ss" }); 
</script> 

Ma question est la suivante: Suis-je obligé de déclarer une nouvelle struct Date et sa mise en œuvre Html.EditorFor ou il y a un moyen plus simple?

+0

Avez-vous envisagé des options de mise en forme d'affichage pour les propriétés DateTime? Tenter de faire un nouveau type vous-même pourrait s'avérer être un mal de tête inutile plus tard, étant donné que DateTime est implémenté presque partout/dans toutes les langues. – Tiramonium

Répondre

1

Vous pouvez modifier quel type ce sont représentés comme lorsqu'ils sont rendus au HtmlHelper en utilisant System.ComponentModel.DataAnnotations dessus des champs dans votre modèle

[DataType(DataType.Date)] 
public DateTime Date { get; set; } 
[DataType(DataType.DateTime)] 
public DateTime DateTime { get; set; } 
+0

Type La date est indéfinie, vous voulez dire 'public DateTime Date' à la place non? – GGO

+0

@GGO Oui désolé! –

1

Vous pouvez rediriger vers un EditorTemplate à l'aide d'un attribut [UIHint] dans ViewModel. Pas de structure Date est nécessaire.

public class ViewModel { 
    [UIHint("Date")] 
    public DateTime Date { get; set; } 
    public DateTime DateTime { get; set; } 
} 

Avec cette déclaration, @Html.EditorFor(m => m.Date) recherchera un EditorTemplate nommé Date.cshtml et passer un DateTime comme modèle à cet éditeur.

Pour plus d'informations, voir: UIHint, DisplayTemplates, and EditorTemplates in MVC.