var Bağlama.ASP.NET MVC Karıştırma Özel ve Standart Modeli Bir tür
Bir Range nesnesini döndürmek için varsayılan model bağlayıcıyı çağırmak için özel model ciltleyicimden bir yol var mı? Ben sadece ModelBindingContext'i doğru bir şekilde kurmam gerektiğini düşünüyorum, ama nasıl olduğunu bilmiyorum. İlk açıklama ve cevap baktığımızda DÜZENLEME
- yararlı olabilir varsayılan model bağlayıcı devralan gibi görünüyor.
şimdiye kadar ben benim kurulum için daha ayrıntılı bilgileri eklemek için:public IssueFormModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
Order = //code to pull the OrderNumber from the context and create an Order
Item = //code to pull the ItemNumber from the context and create an Item
IssueForm form = IssueFormFactory.Create(Order, Item);
form.Range = // ** I'd like to replace my code with a call to the default binder **
return form
}
}
Bu bunu yapmanın bir aptal yol olabilir ... Bu benim ilk modeli bağlayıcıdır. Sadece şu anki uygulamamı işaret ediyor. Yani cevaplar
DÜZENLEME 2.
ben gibi "Bütün bağlayıcı bıktım" yöntem haline kanca ve özelliklere sahip Fabrika yöntemini çağırabilirsiniz eğer BindProperty çalışacaktır geçersiz kılmak için.
Gerçekten DefaultModelBinder uygulamasına bakıp aptallıktan çıkmam gerektiğini düşünüyorum. DefaultModelBinder gelen
public class CustomModelBinder : DefaultModelBinder {
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor) {
if(propertyDescriptor.Name == "Order") {
...
return;
}
if(propertyDescriptor.Name == "Item") {
...
return;
}
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
}
En zarif çözüm olup olmadığından emin değilim, ancak özel model bağlayıcıyı IModelBinder uygulamasından ziyade DefaultModelBinder'dan türetebilir misiniz? Daha sonra BindModel'i geçersiz kıldığınızda, sorumluluğu uygun olduğunda DefaultModelBinder'a iletin. Aksi halde, özel ciltleme kullanın. –
Yah, IModelBinder ve DefaultModelBinder öğelerinden bazı model bağlayıcılar çıktığını görüyorum. DefaultModelBinder'ın BindModel yönteminden çağrı aldığını düşündüğüm birkaç yöntemi vardır, bu sayede gereksinimlerinizi daha fazla odaklayabilirsiniz? – anonymous
Sadece ModelBinder'i göz ardı etme ve kod giriş işlemlerini ve doğrulama işlemlerini el ile yapma kararımı onaylıyor. Şimdi tutarlı ve şeffaf, geleceğe dönük ve gelecekteki ihtiyaçlarını karşılayabiliyorum. – User