2012-01-06 13 views
10

Estoy desarrollando una aplicación donde necesito pasar el valor del nombre de usuario de un controlador a una vista. i intentado ViewData como se da en http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspx¿Cómo pasar valores del controlador para ver en asp.net?

Mi código en controlador está

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

donde nombre de usuario y contraseña se obtienen de otra forma.

Y el código de la vista es

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

Pero cuando corro este código, la pantalla muestra <% = ViewData [ "nombre de usuario"]%> en lugar del nombre de usuario real decir, por ejemplo, "XYZ ".

¿Cómo debo mostrar el nombre de usuario real?

Muchas gracias de antemano por su ayuda.

Respuesta

12

Estás usando la sintaxis de afeitar aquí, pero usted está tratando de mezclarlo con la sintaxis asp.net es mayor, use

@ViewData["UserName"] 

lugar

Además, normalmente no usaría la bolsa vista para pasar datos a la vista. La práctica estándar es crear un modelo (una clase estándar) con todos los bits de datos que su Vista (página) quiere luego pasar ese modelo a la vista desde su controlador (devolver View (myModel);)

Para hacer esto también tiene que declarar el tipo de modelo que está utilizando en su opinión

@model Full.Namespace.To.Your.MyModel 

leer http://msdn.microsoft.com/en-us/gg618479 de modelos MVC tutorial básico

6

parece que está usando la navaja vista del motor en lugar de la web Formularios Ver motor. Intente lo siguiente en su lugar:

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

El 'ViewBag' es un holdover de MVC2. El desarrollo de MVC3 debería usar 'ViewModel's' fuertemente tipado.

Cuestiones relacionadas