2010-09-01 18 views
5

मैं एक नियंत्रक कार्रवाई कि दिखता है की एक बहस के लिए एक कस्टम मॉडल बांधने की मशीन का उपयोग करते हुए की तरह:एक नियंत्रक कार्रवाई

public ActionResult DoSomethingCool(int[] someIdNumbers) 
{ 
    ... 
} 

मैं कस्टम मॉडल का उपयोग करने में सक्षम होना चाहते बांधने की मशीन से आईडी की कि सारिणी निर्मित होगा ग्राहक पर चेकबॉक्स की एक सूची। क्या उस तर्क से बांधने का कोई तरीका है? इसके अतिरिक्त, क्या उपयोग किए जा रहे तर्क के नाम की खोज करने के लिए मॉडल बाइंडर का कोई तरीका है? उदाहरण के लिए, मेरे मॉडल बाइंडर में मुझे यह जानना अच्छा लगेगा कि तर्क का नाम "कुछ INNumbers" था।

public ActionResult Contact([ModelBinder(typeof(ContactBinder))]Contact contact) 

यहाँ,:

उत्तर

6

तर्क के नाम पर आप ModelBindingContext.ModelName संपत्ति

public class MyModelBinder : IModelBinder 
{ 
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var thisIsTheArgumentName = bindingContext.ModelName; 
    } 
} 
+0

यह दृष्टिकोण कई अलग-अलग तर्कों के लिए एक ही बाइंडर का पुनः उपयोग करने के लिए काफी आसान है। – jonnybot

11

ModelBinder विशेषता एक कार्रवाई विधि के अलग-अलग मानकों को लागू किया जा सकता का उपयोग कर सकते पता करने के लिए contact पैरामीटर ContactBinder का उपयोग कर बाध्य है।

संबंधित मुद्दे