it-swarm.com.de

Teilansicht im Code MVC Razor rendern

Ich verwende MVC 3 Razor, um ein einfaches CMS für Übungszwecke zu erstellen, und ich möchte einige Teilansichten erstellen. 

Ich möchte eine Datenbanksuche durchführen und sehe, dass 3 Teilansichten für die Seite gerendert werden müssen. 

Wie würde ich das machen? In WebForms rufen Sie LoadControl (ControlURL) auf, aber ich sehe hier keine Entsprechung.

Wäre es eine clientseitige Sache?

Bearbeiten - Ich habe mehr daran gedacht, einen Ansichtsnamen aus dem Modell zu nehmen und diese Ansicht dann zu rendern, als den Namen der Ansicht vorher zu kennen. Eine Seite kann also eine Ansicht namens Foo oder eine Ansicht namens Bar haben. Zur Laufzeit teilt das Modell dem Controller mit, welche Ansicht gerendert werden soll.

19
Paul

Es gibt zwei Methoden, mit denen Sie ein "Steuerelement" rendern können.

@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }

Sie können auch andere Aktionen ausführen.

@Html.Action("ActionName", "Controller", new { Values = "yourvalues" })
@{ Html.RenderAction("ActionName", "Controller", new { Values = "yourvalues" }); }

Beachten Sie, dass der zweite von jedem von @{ } umgeben ist. Dies liegt daran, dass sie keinen String zurückgeben, sondern direkt in den Stream rendern.

49
Buildstarted

Berücksichtigen Sie auch @Html.Action() anstelle der Teilansicht

1
Felix
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)
            }
        });
    }
0
Jain Chengalan

Ein anderer Weg 

@RenderPage("~/Views/Shared/LeftMenu.cshtml")
0
Fatih