2012-01-06 15 views
10

Sto sviluppando un'applicazione in cui ho bisogno di passare il valore del nome utente da un controller a una vista. ho provato Viewdata come indicato nella http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspxCome passare i valori dal controller per visualizzare in asp.net?

mio codice nel controllore è

public ActionResult Index(string UserName, string Password) 
{ 
     ViewData["UserName"] = UserName; 
     return View(); 
} 

dove username e password sono ottenuti da un altro modulo.

E il codice nella visualizzazione è

@{ 
    ViewBag.Title = "Index"; 
} 
<h2>Index</h2> 
<%= ViewData["UserName"] %> 

Ma quando si esegue questo codice, il display mostra <% = Viewdata [ "username"]%> anziché il nome utente effettivo dire, per esempio "XYZ ".

Come si visualizza lo UserName effettivo?

Grazie mille in anticipo per il vostro aiuto.

risposta

12

Stai usando la sintassi rasoio qui, ma si sta cercando di mescolare con la sintassi asp.net anziani, utilizzare

@ViewData["UserName"] 

invece

Inoltre, di solito non si usa la borsa vista per passare i dati alla vista. La pratica standard consiste nel creare un modello (una classe standard) con tutti i bit di dati che il View (pagina) vuole quindi passare quel modello alla vista dal controller (return View (myModel);)

Per fare questo è inoltre necessario dichiarare il tipo di modello che si sta utilizzando nella vista

@model Full.Namespace.To.Your.MyModel 

leggere http://msdn.microsoft.com/en-us/gg618479 di modelli MVC tutorial di base

6

sembra che si sta utilizzando il rasoio View motore piuttosto che il Web Modulo di visualizzazione moduli. Prova invece:

@{ 
    ViewBag.Title = "Index"; 
} 
<h2>Index</h2> 
@ViewData["UserName"] 
0

"ViewBag" è un holdover di MVC2. Lo sviluppo di MVC3 dovrebbe utilizzare "ViewModel's" fortemente digitato.

Problemi correlati