2012-06-18 55 views
5

Tengo una aplicación MVC, cuya vista SharedLayout (página maestra) le da la capacidad de búsqueda al usuario. Podrían buscar su orden por Orden No o Por Bill no. Entonces, hay dos botones de opción, la Vista compartida junto con el cuadro de texto. Código es algo como estoDevolver diferentes vistas desde el controlador 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> 
     } 

Así que va a ir a TrackingController y método Track en ella y volver la vista. Funciona bien para una sola búsqueda, ya que una Vista está asociada con los métodos de un controlador. Funciona bien, pero ¿cómo podría devolver de forma condicional la otra vista en función de la selección del botón de selección?

Lo que ocurre es este

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

amablemente guíe. Gracias

Respuesta

15

View tiene una sobrecarga en la que el primer parámetro es una cadena. Este es el nombre (o ruta) de la vista que desea usar, en lugar de la opción predeterminada (que es una vista que coincide con el nombre de la acción).

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, Me ganaste 20 segundos) –

Cuestiones relacionadas