2012-06-18 7 views
5

나는 SharedLayout 뷰 (마스터 페이지)가 사용자가 검색 할 수있는 기능을 제공하는 MVC 응용 프로그램을 사용했습니다. 주문 번호 또는 빌 번호로 주문을 검색 할 수 있습니다. 따라서 공유보기와 텍스트 상자의 두 가지 옵션 버튼이 있습니다. 코드는 다소 비슷합니다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로 이동하여보기를 반환합니다. 보기가 컨트롤러의 메서드와 연결되어 있기 때문에 단일 검색에서 올바르게 작동합니다. 그것은 잘 작동하지만 어떻게 조건부 라디오 버튼 선택에 따라 다른보기를 반환 할 수 있습니다.

는 내가 뭘 가지고 올 것은 친절하게 안내하는이

[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 초) –

관련 문제