2011-05-17 11 views

Respuesta

22

Sólo tiene que especificar el nombre de vista al llamar al método View() como

public ViewResult Add() { 
    //... 
    return View("Foo"); 
} 

public ViewResult Edit(int id) { 
    //... 
    var model = repository.get(id); 
    return View("Foo", model); 
} 

Su punto de vista tendrá que manejar valores modelo nulo/vacíos de la acción Add o se puede llenar su modelo con defecto valores.

+0

Esto es exactamente lo que estaba buscando. Gracias. – David

-2

Yo usaría jQuery ajax. Al hacer clic en Agregar o Editar llamaría a la acción servir que devolverá el mismo Vista parcial (si desea reutilizarlo). Luego, en la función de éxito de la llamada ajax, solo tiene que poner html devuelto (desde ese PartialView) en cierta parte de su página (o ventana emergente).

agradable y limpio y sin recarga de la página ...

+0

Esto no es necesario, y al hacerlo, el usuario necesitaría javascript habilitado para ejecutar la aplicación. –

6

Es posible que desee considerar el uso de un editor de plantillas en lugar de volver a utilizar el mismo punto de vista. Una plantilla de editor es una vista parcial que se utiliza para editar y/o insertar datos.

Esto requeriría vistas separadas, pero el código sería mínimo. La mayor parte del código estaría en la plantilla que se reutilizaría para las acciones Agregar y Editar.

Después create your template, su Añadir vista se vería así (Razor):

@model Models.Foo  
<h2>Add</h2> 
<p> 
@Html.EditorFor(model => model) // equivalent to EditorForModel() 
</p> 

Y su vista de edición se vería así:

@model Models.Foo  
<h2>Edit</h2> 
<p> 
@Html.EditorFor(model => model) // equivalent to EditorForModel() 
</p> 
+0

También estoy a favor de este método. ¡Huele mejor! – Cymen

+0

Me gusta lo que dices. Sin embargo, recién estoy aprendiendo MVC, y me gusta aprender cosas a lo largo primero, ¡y luego darme un festín con los atajos! – David

Cuestiones relacionadas