2011-05-04 21 views
7

Acabo de echar un vistazo a ASP.Net MVC3 y en una de las vistas generadas automáticamente para Create, utiliza "Html.EditorFor (model => model.User)" para proporcionar un cuadro de texto para que el usuario ingrese su nombre de usuario Idealmente, rellenaría automáticamente esto con @ User.Identity.Name.¿Cómo debo llenar automáticamente el Html.EditorFor con un valor en ASP.Net MVC3?

¿Cuál es la forma correcta de lograr esto? ¿Html.EditorFor me permite rellenarlo automáticamente en la vista, o debería establecerlo en el controlador al pasarlo?

He descubierto que si cambio el método de Crea en el controlador de esto:

public ActionResult Create() 
    { 
     return View(); 
    } 

A esto:

public ActionResult Create() 
    { 
     MyObject myobject = new MyObject(); 
     myobject.User = User.Identity.Name; 
     return View(myobject); 
    } 

Esto parece funcionar. ¿Es esta la forma correcta de hacer esto?

Gracias de antemano por cualquier confirmación de que estoy haciendo esto bien.

Respuesta

4

Absolutamente, la tarea está bien.

+0

No hay clases estáticas involucradas. –

+0

Sí - 'Usuario' es. –

+0

no, no lo es. Es una propiedad del controlador que es un 'IPrincipal' que solo tiene un getter. Este getter llama a la propiedad HttpContext.User que se puede burlar. No es estático –

2

Esta es la forma correcta. Defina un modelo de vista (MyObject) que contenga la propiedad de cadena de usuario, luego haga que su acción de controlador cree una instancia y llene este modelo y finalmente pase el modelo de vista a la vista para mostrar. También es fácil probar la unidad porque la propiedad User.Identity en el controlador es una abstracción que podría ser objeto de burla.

+0

Excelente, gracias. – Darren

1

es una buena manera en este caso, pero si crea un proyecto grande, es mejor crear una clase de modelo global donde colocará todos sus modelos, no en el controlador.

+0

Gracias. ¿Qué bit entraría en la clase de modelo global - el User.Identity.Name? – Darren

Cuestiones relacionadas