तो ऐसा लगता है कि कई लोगों (जैसे here और here) में एमवीसी 4 मॉडल के साथ समस्याएं हैं जो एपीकंट्रोलर के लिए बाध्यकारी हैं, लेकिन उनमें से कोई भी मुझे जो समस्या दिखाई दे रहा है उसे काफी हल नहीं कर रहा है।मैं एमवीसी 4 में कस्टम मॉडल बाइंडर कैसे लगा सकता हूं?
मैं वास्तव में करना चाहता हूं कि पूर्णांक की सूचियों के लिए सरणी बाध्यकारी व्यवहार को बदलना है। तो कहते हैं कि मैं इस तरह के अनुरोध प्रकार था:
public class MyRequestModel
{
public List<long> ListOfIntegers { get; set; }
...
}
और इस जैसी API GET विधि:
public ResultsResponseModel Get(MyRequestModel request)
{
// use request.ListOfIntegers meaningfully
...
return response;
}
मैं मूल रूप से /api/results/?listOfIntegers=1+2+3+4+5
कहना और List<long>
संपत्ति है कि संकल्प के लिए सक्षम होना चाहता हूँ।
मैंने अपने सामान्य मॉडल बाध्यकारी चाल की कोशिश की है, लेकिन एमवीसी 4 में अधिकांश वेब एपीआई के साथ मॉडल बाध्यकारी के लिए यह एक बिल्कुल अलग रास्ता प्रतीत होता है।
दूर मैं MyRequestModel
पर एक System.Web.Http.ModelBinding.ModelBinder
विशेषता का उपयोग कर रहा है, और एक मॉडल बांधने की मशीन है कि "कार्यान्वित" System.Web.Http.ModelBinding.IModelBinder
बनाने मिल गया है। यह लगातार स्टैक निशान के साथ ऑब्जेक्ट संदर्भ अपवाद उत्पन्न करता है जो कभी भी मेरे कोड को स्पर्श नहीं करता है।
किसी ने इसे मारा? आगे क्या प्रयास करने के बारे में विचार है?
अद्यतन: यहाँ एक स्टैक ट्रेस कि मैं अपने कस्टम ExceptionFilterAttribute
में कब्जा है या नहीं:
Object reference not set to an instance of an object.
at System.Web.Http.ModelBinding.DefaultActionValueBinder.BindParameterValue(HttpActionContext actionContext, HttpParameterBinding parameterBinding)
at System.Web.Http.ModelBinding.DefaultActionValueBinder.<>c__DisplayClass1.BindValuesAsync>b__0(RequestContentReadKind contentReadKind)
at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass38.<ToAsyncVoidTask>b__37()
at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
क्या आप स्टैक ट्रेस सबमिट कर सकते हैं? – jorgehmv
बस स्टैक ट्रेस –