2011-06-20 6 views
6

Dostaję moje ręce na MVC 3 i jestem zdezorientowany, że jak używać UserControls w moim projekcie.render usercontrol (cshtml) przy użyciu @ Html.Partial

Utworzono plik usercontrol (cshtml) o nazwie UserControl.cshtml i próbuję go renderować Products.cshtml.

MyUserControl.cshtml znajduje się w folderze udostępnionym.

W Products.cshtml:

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

ale otrzymuję ten błąd. Nie wiem, dlaczego jest tak, starając się wyszukać .ascx pliku .:

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 

Czy to jest prawidłowy sposób, aby uczynić usercontrol w MVC 3?

- Aktualizuj -

To działa.

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

Odpowiedz

14

Nie trzeba określić rozszerzenie pliku, silnik widok będzie poradzić.

@Html.Partial("MyUserControl") 
+0

Dziękuję. To działa. Co jeśli chcę, aby niektóre akcje MyUserControl zostały wywołane podczas awarii sieci? Podobnie jak w przypadku metody Page_Load programu Asp.Net Usercontrol. Jak mogę to zrobić? Nie chcę wywoływać @ {Html.RenderAction ("Index", "MyUserControl");} w Products.cshtml. – Asdfg