2012-04-19 13 views
5

बनाएं मेरे पास मेरे नियंत्रक में निम्न है;सामान्य ActionResult

public ActionResult CocktailLoungeBarAttendant() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult cocktailLoungebarattendant(string name, string email, string phone) 
    { 
     return View(); 
    } 

    public ActionResult merchandisecoordinator() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult merchandisecoordinator(string name, string email, string phone) 
    { 
     return View(); 
    } 

यह केवल 4 बार होता है लेकिन यह मुझे खराब करता है कि मेरे पास कोड 4 बार दोहराया गया है।

मेरे पास बेसकंट्रोलर है जो उसके बाद पैरामीटर को पकड़ता है और उनके साथ सामान करता है;

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 

मैं पोस्ट ActionResult के साथ भाग करने में सक्षम हो और एक आधार नियंत्रक में एक भी एक करना चाहते हैं का कहना है।

क्या यह भी संभव है? अपने (आधार) नियंत्रक ऐड में:

+0

आपके पोस्ट कार्य क्या कर रहे हैं? क्या 2 के बीच प्रसंस्करण में कोई अंतर नहीं है? मैं समझ नहीं पा रहा हूं कि आप क्या हासिल करने की कोशिश कर रहे हैं। –

+0

मैं ऐसा नहीं करूँगा, भले ही मुझे विश्वास न हो कि यह संभव है। यह बिना किसी मूल्य के कोड को जटिल बनाता है। आधार कक्षाएं मेरे लिए बहुत पुरानी स्कूल हैं :) –

+0

पदों में कोई अंतर नहीं है, इसलिए मेरी "इच्छा" कोड दोहराने के लिए – griegs

उत्तर

3

क्या तुम कर सकते हो यह है

protected override void HandleUnknownAction(string actionName) 
    { 
     var controllerName = GetControllerName(); 
     var name = GetViewName(ControllerContext, string.Format("~/Views/{0}/{1}.cshtml",controllerName, actionName)); 
     if (name != null) 
     { 
      var result = new ViewResult 
          { 
           ViewName = name 
          }; 
      result.ExecuteResult(ControllerContext); 
     } 
     else 
      base.HandleUnknownAction(actionName); 
    } 

    protected string GetViewName(ControllerContext context, params string[] names) 
    { 
     foreach (var name in names) 
     { 
      var result = ViewEngines.Engines.FindView(ControllerContext, name, null); 
      if (result.View != null) 
       return name; 
     } 
     return null; 
    } 

यह एक दृश्य के मौजूद रहने पर तरीकों के लिए निर्धारित नहीं की जाँच करने की कोशिश करेंगे। मुझे लगता है कि आप इसे अपनी आवश्यकताओं के अनुरूप अपने आप यहां से बढ़ा सकते हैं।

+0

ग्रेट, इसके लिए धन्यवाद – griegs

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