2013-12-10 9 views
5

(Der Editor für ein Datetime-Eigenschaft namens „ADatum“Hinzufügen einer Klasse EditorFor - Rasierer C#

ich dies versucht, aber es funktioniert nicht

@Html.EditorFor(model => model.ADate, new { cssClass = "date" }) 

So habe ich versucht, dies:

@Html.TextBoxFor(model => model.ADate, new { @class = "date" }) 

aber es gibt type = text .. ofcourse tut es

Also habe ich versucht, eine Vorlage ... ich habe einen Ordner in geteilt.:

Shared/EditorTemplates 

und dann habe ich eine .cshtml Teilansicht genannt Date.cshtml

Nun, was auf der Erde kann ich in ihm setzen: O ...

Ich habe versucht, viel zu verstehen die Beiträge und Stapelüberlauf-Einträge, aber es ist nicht versinkt in.

Das Ziel, einen picker die Klasse „.date“ zu befestigen ist über die gesamte App, wo ".date" Klasse verwendet wird ... Die TextBoxFor funktioniert mit meinem Hinzufügen von Klasse Teil ... aber wie gesagt, der Typ ändert sich von Datum zu Text :(

+0

H Hast du das gelesen: http://www.nickharris.net/2010/08/asp-net-mvc-editor-template-for-jquery-datepicker/? –

+0

@FilipEkberg - Ich brauche ein bisschen mehr Hilfe buddy .. total nicht bekommen :) – Jimmyt1988

Antwort

7

Ok so das Was können Sie tun:

In Ihrem EditorTemplates Ordner erstellen Sie eine Vorlage namens (der Name wird automatisch aufgelöst, wenn Sie es für Daten verwenden, andernfalls müssen Sie es angeben, wenn Sie es verwenden). Dann drin:

@model System.DateTime 

@Html.TextBox(
    string.Empty, 
    Model.ToString("yyyy-MM-dd"), 
    new { @class="datepicker", @type = "date"}) 

den letzten Parameter Verwenden Sie einen beliebigen HTML-Attribut angeben können (Klasse, Daten, Typ usw.).

Dann nutzen Sie es wie folgt aus:

@Html.EditorFor(x => x.ADate) 

Falls Sie gewählt haben Ihre Vorlage mit einem anderen Namen nennen Sie es durch Aufruf einer weiteren Überlastung angeben:

@Html.EditorFor(x => x.ADate, "MyOtherAwesomeTemplate") 
+0

Aus irgendeinem Grund wird die Vorlage nicht aufgerufen, wenn der Name "DateTime.cshtml" ist, stattdessen muss ich es explizit mit der überladene Zeichenfolge? irgendwelche Ideen? Meine Eigenschaft ist definitiv DateTime Typ – Jimmyt1988

+0

@JamesT Hey James, nicht sicher, was das Problem sein könnte. Sind Sie sicher, dass Sie nicht mehrere Vorlagen haben? Befindet sich Ihre Vorlage in 'Views/Shared/EditorTemplates /'? Könnten Sie vielleicht zeigen, wie Sie es benutzen (und wie Sie es definiert haben)? Ich habe versucht, es hier mit jedem Szenario zu testen, das mir einfällt, und ich konnte es nicht reproduzieren. –

2

Der EditorFor html Helfer Rendert eine Datumsauswahl für Ihre DateTime-Attribute nicht (wenn Sie das möchten). Der Standard-Editor für DateTime ist eine Texteingabe. Wenn Sie eine Datumsauswahl verwenden möchten, müssen Sie jQuery DatePicker (oder eine andere Datumsauswahl von Drittanbietern) verwenden.

Auch der EditorFor-Helfer hat keinen Parameter für HTML-Attribute. Wenn Sie eine Klasse zuweisen möchten, müssen Sie TextBoxFor verwenden.

in der Hauptansicht, verwenden Sie die EditorFor wie folgt aus:

@Html.EditorFor(model => model.ADate) 

in Ihrem Editor-Vorlage (Datum dann.cshtml), müssen Sie:

@model System.DateTime 

<script type="text/javascript"> 
    $(function() { 
     $(".date").datepicker(); 
    }); 
</script> 

@Html.TextBox("", Model.ToString("d"), new { @class = "date" }) 

Sie können die jQuery UI hier herunterladen: Download jQuery UI

Und Sie mehr über die jQuery Datepicker hier lernen können: jQuery DatePicker

+0

Danke für Ihre Hilfe, auch hilfreich – Jimmyt1988

0

Sie dies tun können

@Html.EditorFor(model => model.ADate) 

<style type="text/css"> 

#ADate 
{ 
@* your css properties goes here *@ 
} 
</style> 

das funktioniert gut für MVC3 Razor

Verwandte Themen