2012-04-19 31 views
5

Tôi có những điều sau đây trong bộ điều khiển của mình;Tạo ActionResult phổ biến

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(); 
    } 

Điều này chỉ xảy ra 4 lần nhưng nó khiến tôi bị lặp lại mã 4 lần.

Tôi sau đó có một BaseController sau đó lấy các tham số và thực hiện các công cụ với chúng;

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 

Tôi muốn có thể xóa bỏ Bài đăng ActionResult và có một bộ điều khiển cơ sở duy nhất trong bộ điều khiển cơ sở.

Điều này có thể thực hiện được không?

+0

Tác vụ POST của bạn đang làm gì? Không có bất kỳ sự khác biệt trong việc xử lý giữa 2? Tôi không hoàn toàn hiểu những gì bạn đang cố gắng đạt được. –

+0

Tôi sẽ không làm điều đó chút nào, ngay cả khi tôi không tin là có thể. Nó phức tạp mã nhiều mà không có bất kỳ giá trị. Có các lớp cơ sở là rất cũ trường như đối với tôi :) –

+0

không có sự khác biệt trong những gì các bài viết đang làm không, do đó "mong muốn" của tôi không lặp lại mã số – griegs

Trả lời

3

gì bạn có thể làm là thế này: Trong bạn (cơ sở) điều khiển add:

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; 
    } 

này sẽ cố gắng để kiểm tra xem một cái nhìn tồn tại cho các phương pháp không được định nghĩa. Tôi nghĩ rằng bạn có thể mở rộng nó từ đây một mình cho phù hợp với nhu cầu của bạn.

+0

Tuyệt vời, cảm ơn vì điều đó – griegs

Các vấn đề liên quan