2012-05-09 13 views
5

Nancy, dynamic değişkeni aracılığıyla işleyicilerime sorgu dizgimi ve form değerlerini iletir. Aşağıdaki örnek, Nancy isteği aracılığıyla bir POST işleyicisine iletilen form değerlerini göstermektedir. Request.Form.xxx.NancyFX: İşleyici için sorgu dizesi/form değerlerinin doğru şekilde iletilip iletilmediğini nasıl kontrol ederim?

Handler

Post["/"] = _ => 
    { 
     var userId = (string) Request.Form.userid; 
     if (userId.IsEmpty()) return HttpStatusCode.UnprocessableEntity; 
     return HttpStatusCode.OK; 
    }; 

Benim değeri null veya boş dize (eşdeğer string.IsNullOrEmpty() kadar) olup olmadığını kontrol etmek için bir dize uzantısı yöntemi kullanılarak daha sonra bir dizeye userid döküm ve am görebilirsiniz.

Tercih ettiğim şey, dinamik tipte uzatma yöntemini kullanmaktır, böylece başka bir şey yapmadan önce akıl kontrollerini gerçekleştirebilirim. Ben kodu şöyle istiyor:

if(Request.Form.userid.IsEmpty()) return HttpStatusCode.UnprocessableEntity; 

Ancak, dynamic türleri için uzatma yöntemleri olamaz. Ayrıca, bir mülkün varlığını yansıtma yoluyla kontrol edemezsiniz. DLR'ye hoş geldiniz.

Soru

beklenen sorgu/form değerleri benim Nancy işleyicisi için kabul edilmiştir sağlamak için ön denetimleri gerçekleştirmek için en kolay, en güvenli yolu nedir?

Teşekkür

cevap

12
Request.Form.userid.HasValue 

İşleri tür tüm Formu, Query olarak DynamicDictionary üyeleri ve rota parametreleri

2

Sen yani ModelBinder formu, özellikleri modelinizi Bind için Cilt kullanabilirsiniz için model sınıfı HTML kontrol isimlerine karşılık gelir.

var course = this.Bind<Course>(); // Course is our model class 
if(course != null) { 
    // your codes go here 
} 
İlgili konular