2016-10-08 4 views
0

Ich habe folgende Struktur:Benutzerdefinierte Parse-Wert für Viewmodel-Eigenschaft (Custom Bind)

public struct DataRange 
{ 
    public DateTime BeginDate {get;set;} 
    public DateTime EndDate {get;set;} 
} 

Diese Struktur auf viele Aktionen meiner asp.net Mvc 5 App verwendet wird.

Ich benutze eine benutzerdefinierte Eingabe (daterangepicker) und ich möchte den benutzerdefinierten String-Wert der Eingabe nur einmal an meinen benutzerdefinierten Datentyp binden und es entlang meiner App verwenden.

Z. B:

public class FindSalesByDateViewModel 
{ 
    public DateRange Interval {get; set;} 
} 

public class SalesController : Controller 
{ 
    public ActionResult Index(FindSalesByDateViewModel model) 
    { 
     //Access the model.Interval without parse the string value always. 
    } 
} 

Ich bin ein Anfänger auf mvc Entwicklung. Ich fand die folgenden Lösungen, die nicht sehr attraktiv sind, gibt es andere Möglichkeiten, dies zu erreichen?

Solution 1

Solution 2

EDIT

Die benutzerdefinierte Eingabewert, der aus Sicht kommt, ist: "2016.08.10 - 15/10/2016"

Antwort

1

Sie können Ihren benutzerdefinierten Modellordner unter Application_Start:

0 registrieren
ModelBinders.Binders[typeof(DateTime)] = new YourCustomModelBinder(); 
+0

Hallo! Tks für die Antwort, können Sie bitte einen Beispielcode/Dokumentationslink posten? –

+1

Hallo, gern geschehen. Werfen Sie einen Blick darauf: [Globalisierung: Model binding DateTimes mit ASP.Net MVC] (http://www.hackered.co.uk/articles/globalization-model-binding-datetimes-with-asp-net-mvc) oder diese: [Benutzerdefinierte Datumsformate und die MVC Model Binder] (https://blog.greatrexpectations.com/2013/01/10/custom-date-formats-and-the-mvc-model-binder/) oder diese : [Splitting DateTime - Unit testet ASP.NET MVC Custom Model Binders] (http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx) –

+0

In meinem Szenario kam der Wert als Zeichenfolge, wie kann ich in diesem Fall registrieren ? –

Verwandte Themen