2013-01-31 10 views
5

Come posso allegare una vista esistente a un'azione? Voglio dire, ho già collegato questa vista ad un'azione, ma quello che voglio è quello di associarmi ad una seconda azione.Come allegare una vista esistente all'azione di un controller?

Esempio: Ho un'azione denominata Indice e una vista, lo stesso nome, associata ad esso, clic destro, aggiungi vista ..., ma ora, come collegarlo a un secondo? Supponiamo un'azione chiamata Indice2, come ottenere questo?

Ecco il codice:

//this Action has Index View attached 
public ActionResult Index(int? EntryId) 
{ 
    Entry entry = Entry.GetNext(EntryId); 

    return View(entry); 
} 

//I want this view Attached to the Index view... 
[HttpPost] 
public ActionResult Rewind(Entry entry)//...so the model will not be null 
{ 
    //Code here 

    return View(entry); 
} 

ho cercato con Google e non riesci a trovare una risposta adeguata ... E 'possibile?

risposta

5

non si può "fissare" le azioni di vista, ma è possibile definire che cosa vista che si desidera essere restituito da un metodo di azione utilizzando il metodo Controller.View

public ActionResult MyView() { 
    return View(); //this will return MyView.cshtml 
} 
public ActionResult TestJsonContent() { 
    return View("anotherView"); 
} 

http://msdn.microsoft.com/en-us/library/dd460331%28v=vs.98%29.aspx

+0

Quando mi fate clic destro sulla lotta menu contestuale mi mostra Add View opzione, va bene. Quindi non posso aggiungere questa stessa vista ad un'altra azione? –

+0

è possibile aggiungere manualmente una nuova vista al progetto quindi restituirlo utilizzando il codice sopra –

+0

Non voglio aggiungere una nuova vista, voglio riutilizzare una vista esistente con un'altra azione denominata in modo diverso ... –

4

Fa questo aiuto? È possibile utilizzare il sovraccarico di vista per specificare un punto di vista diverso:

public class TestController : Controller 
{ 
    // 
    // GET: /Test/ 

    public ActionResult Index() 
    { 
     ViewBag.Message = "Hello I'm Mr. Index"; 

     return View(); 
    } 


    // 
    // GET: /Test/Index2 
    public ActionResult Index2() 
    { 
     ViewBag.Message = "Hello I'm not Mr. Index, but I get that a lot"; 

     return View("Index"); 
    } 


} 

Ecco la vista (Index.cshtml):

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p>@ViewBag.Message</p> 
+1

Nel tuo esempio sarebbe il ritorno Visualizza ("Indice", voce); –

+0

In realtà, non ... Ho bisogno di passare il modello come argomento all'azione. –

+1

Intendo che puoi sostituire la riga in '// Code here',' return View (entry); 'nel tuo codice con' return View ("Index", entry); ' –

Problemi correlati