2010-01-23 10 views
16

Ich frage mich, ob es möglich ist, einen benutzerdefinierten stark typisierten HTML-Helfer in ASP.NET MVC 2 zu erstellen? Das Erstellen eines regulären (Lese nicht stark typisierten) Helfers ist einfach, aber ich habe Schwierigkeiten, stark typisierte Versionen zu erstellen. Zum Beispiel möchte ich einen DatePickerFor HTML Helper erstellen ...Ist es möglich, einen benutzerdefinierten ASP.NET MVC stark typisierten HTML Helper zu erstellen?

Jede Anleitung oder Schnipsel würde sehr geschätzt, Vielen Dank im Voraus! JP

Antwort

14

Ok, ich fand es heraus (und es war ziemlich einfach ...). Eine meiner Überlastungen für den Fall, dass noch jemand auf diese Frage eingeht.

public static string DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel, TProperty>> expression) 
    where TModel : class 
{ 
    var inputName = ExpressionHelper.GetExpressionText(expression); 
    return htmlHelper.DatePicker(inputName); 
} 
+2

@JP Wie erhalten Sie den Wert? z.B. html.DatePicker (x => x.Date), wie erhalten Sie x.Date-Wert – Omu

1
public static string DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel, TProperty>> expression) 
    where TModel : class 
{ 
    ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); 
    return htmlHelper.DatePicker(metadata.PropertyName); 
} 

I verwendet ModelMetadata dies wird auch funktionieren, wenn Sie eine Datetime-Vorlage für picker erstellen.

+0

Ist dieses Konto für 'html.DatePickerFor (m => m.User.Birthday)'? (Mehrere Dereferenzierungsstufen?) Es sieht so aus, als würde das '.PropertyName'-Element nur den letzten Namen zurückgeben, und sollte es nicht alle Ebenen verwenden? –

4

Ich habe gerade folgendes ausprobiert, um einen stark typisierten CKEditor-Helfer zu erstellen, der einwandfrei zu funktionieren scheint. Dies setzt voraus, dass Sie in Ihrem Projekt bereits jquery und die erforderlichen ckeditor-Skripte eingebunden haben. Es könnte auch schön sein, auch die Einstellung von ckeditor config zu betrachten, aber das hat meine momentanen Bedürfnisse befriedigt.

Verwandte Themen