2011-06-20 30 views
6

Tengo en mis manos MVC 3 y estoy confundido que como uso UserControls en mi proyecto.render usercontrol (cshtml) usando @ Html.Partial

He creado un archivo usercontrol (cshtml) llamado UserControl.cshtml y estoy intentando representarlo Products.cshtml.

MyUserControl.cshtml reside en la carpeta compartida.

En Products.cshtml:

<div> 
    @Html.Partial("MyUserControl.cshtml"); 
</div> 

pero estoy consiguiendo este error. No sé por qué está tratando de buscar Ascx archivo .:

The partial view 'MyUserControl.cshtml' was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Products/MyUserControl.cshtml.aspx 
~/Views/Products/MyUserControl.cshtml.ascx 
~/Views/Shared/MyUserControl.cshtml.aspx 
~/Views/Shared/MyUserControl.cshtml.ascx 

Es esta la forma correcta de hacer usercontrol en MVC 3?

--Actualización--

Esto funciona.

@RenderPage("../Shared/MyUserControl.cshtml") 

Respuesta

14

que no es necesario especificar la extensión del archivo, el motor de vista se encargará de eso.

@Html.Partial("MyUserControl") 
+0

Gracias. Esto funciona. ¿Qué sucede si quiero que se invoque alguna acción de MyUserControl de forma predeterminada cuando se carga? Al igual que el método Page_Load de Asp.Net Usercontrol. ¿Cómo puedo hacer eso? No quiero llamar a @ {Html.RenderAction ("Index", "MyUserControl");} en Products.cshtml. – Asdfg