2016-10-08 1 views
0

je la struct suivante:valeur d'analyse syntaxique personnalisée pour la propriété ViewModel (Custom Bind)

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

Ce struct est utilisé sur de nombreuses actions de mon asp.net mvc 5 app.

J'utilise une entrée personnalisée (daterangepicker) et je veux lier la valeur de chaîne personnalisée de l'entrée à mon type de données personnalisé juste une fois et l'utiliser le long de mon application.

par exemple:

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. 
    } 
} 

Je suis un débutant sur le développement mvc. J'ai trouvé les solutions suivantes qui ne sont pas très attrayantes, existe-t-il un autre moyen d'y parvenir?

Solution 1

Solution 2

EDIT

La valeur d'entrée personnalisée qui vient de la vue est: "10/08/2016 - 15/10/2016"

Répondre

1

Vous pouvez enregistrer votre classeur modèle personnalisé dans Application_Start:

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

Salut! Pour une réponse, pouvez-vous poster un exemple de code/lien de documentation? –

+1

Bonjour, je vous en prie. Jetez un oeil à ceci: [Mondialisation: Modèle de liaison DateTimes avec ASP.Net MVC] (http://www.hackered.co.uk/articles/globalization-model-binding-datetimes-with-asp-net-mvc) ou celui-ci: [Formats de date personnalisés et le classeur modèle MVC] (https://blog.greatrexpectations.com/2013/01/10/custom-date-formats-and-the-mvc-model-binder/) ou celui-ci : [Fractionnant DateTime - unité de test ASP.NET MVC Custom Model Binders] (http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx) –

+0

Sur mon scénario, la valeur cames sous forme de chaîne, comment puis-je enregistrer dans ce cas ? –