J'utilise MVC 3 Razor pour créer un simple CMS à des fins de formation. L'idée est de créer quelques vues partielles.
Je souhaite effectuer une recherche dans la base de données et voir que 3 vues partielles doivent être rendues sur la page.
Comment je ferais ça? Dans WebForms, vous appelez le LoadControl (ControlURL), mais je ne vois pas d’équivalent ici.
Serait-ce une chose côté client?
Éditer - Je pensais plutôt prendre un nom de vue du modèle et ensuite rendre cette vue plutôt que de connaître le nom de la vue à l'avance. Ainsi, une page peut avoir une vue nommée Foo ou une vue nommée Bar. Le modèle, au moment de l'exécution, indiquera au contrôleur quelle action afficher.
Il existe deux méthodes que vous pouvez utiliser pour rendre un "contrôle".
@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }
Vous pouvez également rendre d'autres actions.
@Html.Action("ActionName", "Controller", new { Values = "yourvalues" })
@{ Html.RenderAction("ActionName", "Controller", new { Values = "yourvalues" }); }
Notez que le second de chaque symbole est entouré de @{ }
car ils ne renvoient pas de chaîne, mais le rendent directement dans le flux.
En outre, considérez @Html.Action()
au lieu de la vue partielle
Html.RenderPartial("partialview name", Model.class, new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "classname" } });
This code can be used to render the partial view in apge.
HTMLfiledprefix is defined to keep the data available in the model
You can use tis code to load a partial view on a button event using ajax
function partialview() {
var url = '@Url.Action("action", "controller")';
var data = $('#frm').serialize();
(to serialize the data in the model before posting to the action)
var finaldata = data;
$.ajax({
type: "post",
url: url,
data: finaldata,
async: false,
contentType: "application/json; charset=utf-8",
error: function (xhr) {
errorRedirecttoErrorController(xhr.error);
},
success: function (data) {
$("#DIVID").html(data);
(div to which the partial view to be loaded)
}
});
}
Autrement
@RenderPage("~/Views/Shared/LeftMenu.cshtml")