Sunucuya gelen her HttpPost
için çağrılan özel bir MVC Model Binder oluşturdum. Ancak HttpGet
istekleri için çağrılmadı. Özel Model Binder ASP.NET MVC GET isteği üzerine
- benim özel modeli bağlayıcı bir
GET
sırasında denilen olsun mıdır? Eğer öyleyse, neyi özledim? - Değilse,
QueryString
numaralı özel kod işleyişini birGET
isteğinden nasıl yazabilirim? İşte
... Global.asax
protected void Application_Start()
{
ModelBinders.Binders.DefaultBinder = new CustomModelBinder();
//...
}
ben bu çözümlerin içine baktım
public class CustomModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
// This only gets called for POST requests. But I need this code for GET requests.
}
}
benim uygulaması var, ama onlar ben ne için oldukça işi arıyor:
- ile kalıcı karmaşık türleri Yardım için @Felipe için
sayesinde karmaşık türleri (
?Name=John&Surname=Doe
) Yanıta
Aciklama oluşturmak için varsayılan bağlayıcı kullanılması
GET
istekleriDefaultModelBinder
sınıf için kullanılacak CAN özel model- olduğunu eylem yöntem parametresine sahip OLMALIDIR (aksi taktirde, model binder,
sen [OnActionExecuting] kullanabilirsiniz (https://msdn.microsoft .com/en-us/library/dd493080% 28v = vs.98% 29.aspx) her isteği filtrelemek ve bu metotta 'Request' kullanarak sorgu dizisi alabilirsiniz. –
@JSantosh, bunu yaptım ve 'QueryString'imi' OnActionExecuting' içinde tuttum diyelim. QueryString'i bir nesneye dönüştürebilir ve bunu eylem yöntemine bir parametre olarak iletemezdim? Bu da beni aynı güçlükle terk ediyor. –
İstek üzerine, veriyi otomatik olarak ilgili modele ayrıştırılmış bir nesne olarak alırsınız, ancak veriyi string olarak aldığınızda, bunu başarabileceğinden emin değilim. ve iyi bir soru :) –