Così ho un personalizzato modello Binder implementato per DateTime
tipo e mi registrarlo come di seguito:Web API ModelBinding Da URI
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
GlobalConfiguration.Configuration.BindParameter(typeof(DateTime), new CurrentCultureDateTimeAPI());
}
e poi devo configurazione 2 azioni campione per vedere se il mio modello personalizzato avviene il legame :
[HttpGet]
public void BindDateTime([FromUri]DateTime datetime)
{
//http://localhost:26171/web/api/BindDateTime?datetime=09/12/2014
}
[HttpGet]
public void BindModel([FromUri]User user)
{
//http://localhost:26171/web/api/BindModel?Name=ibrahim&JoinDate=09/12/2014
}
Quando eseguo e invoco entrambe le azioni da URL citati, user
's JoinDate
proprietà con successo viene legato usando il legante personalizzato ho configurato ma BindDateTime
' sIl parametronon viene associato utilizzando il raccoglitore personalizzato.
Ho già specificato in config che tutti gli DateTime
devono utilizzare il mio raccoglitore personalizzato e quindi perché l'indifferenza? I suggerimenti sono molto apprezzati.
CurrentCultureDateTimeAPI.cs:
public class CurrentCultureDateTimeAPI: IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var date = value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);
bindingContext.Model = date;
return true;
}
}
NOTA: Se uso [FromUri(Binder=typeof(CurrentCultureDateTimeAPI))]DateTime datetime
allora funziona come previsto, ma poi di nuovo perché?
Forse questo è perché si sta impostando un [FromUri] attributo - Web API utilizza formattatori al posto del modello vincolanti, così il vostro il raccoglitore modello personalizzato non viene utilizzato.Prova a rimuovere l'attributo [FromUri] nel metodo BindDateTime. –
@IlyaLuzyanin No. Non funziona. – lbrahim
Hai ragione, [FromUri] non ha nulla a che fare con questo. Ho provato a riprodurre il tuo scenario: tutto funziona perfettamente, il mio modello personalizzato è chiamato in entrambi i metodi. Potresti fornire il codice CurrentCultureDateTimeAPI? –