Je me demandais, si c'est possible, quelle est la meilleure façon de rendre un partiel en utilisant le nouveau moteur de vue Razor. Je comprends qu'il s'agit de quelque chose qui n'était pas complètement terminé au moment de la mise en place du nouveau moteur.
Actuellement, j'utilise RenderPage pour rendre le contrôle de l'utilisateur :
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
La page qui appelle RenderPage utilise une page de mise en page (maître) avec trois sections définies : TitleContent, HeadContent et Maincontent. Lorsque j'essaie de rendre mon contrôle local à partir de cette page, il apparaît que ces sections sont également requises - elles ne devraient être requises que dans la page appelante et sont présentes. Je reçois le message suivant, que j'inclue ou non les sections dans ma vue partielle (de toute évidence, je ne veux pas inclure ces sections, mais cela semblait être un point de débogage intéressant...).
Les sections suivantes ont été définies mais n'ont pas été rendues sur la page de mise en page ~/Views/Shared/LocaleUserControl.cshtml' : TitleContent ; HeadContent ; MainContent
Ma vision partielle est la suivante (adaptée de ce qui suit) enlace ):
@inherits System.Web.Mvc.WebViewPage<LocaleBaseModel>
@using System.Web.UI;
<p>
@Html.LabelFor(model => Model.CountryName)
<br />
@Html.DropDownListFor(model => Model.CountryName,null, string.Empty, new { @class = "text", accesskey="u"})
</p>
<p>
@Html.LabelFor(model => Model.StateProvince)
<br />
@Html.DropDownListFor(model => Model.StateProvince, null, string.Empty, new { @class = "text", accesskey="t" })
</p>
<script type="text/javascript">
$(function () {
var countries = $("#CountryName");
var statesprovinces = $("#StateProvince");
countries.change(function () {
statesprovinces.find('option').remove();
var url = '@Url.Action("GetStatesProvinces", "Base")';
$.getJSON(url, { countryId: countries.val() }, function (data) {
$(data).each(function () {
$("<option value=" + this.ID + ">" + this.Name + "</option>").appendTo(statesprovinces);
});
});
});
});
</script>