2012-04-19 15 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回繰り返されていると私はバグです。

次に、BaseControllerを取得してからパラメータを取得し、それらのデータを取得します。

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 

私はポストActionResult年代を廃止できるようにしたいとベースコントローラに単一のものを持っているだろうと言います。

これも可能ですか?あなたの(ベース)コントローラの追加 :あなたは何ができるか

+0

POSTアクションは何をしていますか? 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

関連する問題