2012-06-18 13 views
5

私はSharedLayoutビュー(マスターページ)がユーザーの検索機能を提供するMVCアプリケーションを持っています。注文番号またはビル番号で注文を検索することができます。したがって、共有ビューとテキストボックスの2つのオプションボタンがあります。コードはこれと少し似ていますMVCコントローラから別のビューを返す

@using (Html.BeginForm("Track", "Tracking", FormMethod.Post)) 
     { 
      <div style="text-align: center"> 
       <textarea cols="20" id="txtNo" name="txtOrderNo" rows="2" ></textarea> 
      </div> 
      <div style="text-align: center"> 
       <input type="radio" name="optOrderNo" checked="checked" value="tracking" />Order No     <input type="radio" name="optRefNo" value="tracking" />Ref No 
      </div> 
      <div style="text-align: center"> 
       <input type="submit" value="Track" /> 
      </div> 
     } 

したがって、TrackingControllerとTrack Methodに移動してビューを返します。 Viewはコントローラのメソッドに関連付けられているため、1回の検索でうまく動作します。それはうまく動作しますが、どのように条件付きでラジオボタンの選択に基づいて他のビューを返すことができます。私が思い付く何

この

[HttpPost] 
    public ActionResult Track(FormCollection form) 
    { 
     string refNo = null; 
     if (form["optRefNo"] == null) 
     { 
      string OrderNo = form["txtOrderNo"]; 
      var manager = new TrackingManager(); 
      var a = manager.ConsignmentTracking(OrderNo); 
      var model = new TrackingModel(); 
      if (OrderNo != null) 
       model.SetModelForConsNo(a, consNo); 
      return View(model); 
     } 

     refNo = form["txtConsNo"]; 
     return TrackByRef(refNo); 
    } 

    public ActionResult TrackByRef(string refNo) 
    { 
     //what ever i want to do with reference no 
     return View(); 
    } 

親切に案内しています。 ありがとう

答えて

15

Viewには、最初のパラメータが文字列であるオーバーロードがあります。これは、デフォルト(アクションの名前と一致するビュー)ではなく、使用するビューの名前(またはパス)です。

public ActionResult TrackByRef(string refNo) 
{ 
    //what ever i want to do with reference no 
    return View("Track"); 
    // or, if you want to supply a model to Track: 
    // return View("Track", myModel); 
} 
+0

+1、あなたは私に20秒勝つ) –

関連する問題