Während Sie eine Aktion haben können, die eine Teilansicht zurückgibt, benötigen Sie keine Aktion, um eine Teilansicht zu rendern. RenderPartial nimmt die Teilansicht und rendert sie unter Verwendung des angegebenen Modells und der Ansichtsdaten, falls angegeben, in die aktuelle (übergeordnete) Ansicht.
Möglicherweise möchten Sie eine Aktion, die eine Teilansicht zurückgibt, wenn Sie AJAX zum Laden / Neuladen eines Teils einer Seite verwenden. In diesem Fall ist es nicht erwünscht, die vollständige Ansicht zurückzugeben, da Sie nur einen Teil der Seite neu laden möchten. In diesem Fall kann die Aktion nur die Teilansicht zurückgeben, die diesem Abschnitt der Seite entspricht.
Standardmechanismus
Teilansicht in einer normalen Ansicht verwenden (keine Aktion erforderlich)
...some html...
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
...more html..
Ajax-Mechanismus
Neuladen eines Teils einer Seite über AJAX (Hinweis teilweise wird beim ersten Laden der Seite inline gerendert)
...some html...
<div id="partial">
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
</div>
...more html...
<script type="text/javascript">
$(function() {
$('#someButton').click( function() {
$.ajax({
url: '/controller/action',
data: ...some data for action...,
dataType: 'html',
success: function(data) {
$('#partial').html(data);
},
...
});
});
});
</script>
Controller für AJAX
public ActionResult Action(...)
{
var model = ...
...
if (Request.IsAjaxRequest())
{
return PartialView( "Partial", model.PartialModel );
}
else
{
return View( model );
}
}
Die akzeptierte Antwort ist völlig korrekt, aber ich möchte hinzufügen, dass Sie Ihre Teilansicht mit jQuery load laden können. Weniger Konfiguration erforderlich, wenn Sie die Parallelität nicht berücksichtigen möchten.
$("#Your-Container").load("/controller/action/id");
quelle
Die Antwort ist nein. Manchmal benötigen Sie jedoch eine Controller-Aktion hinter einer Teilansicht. Anschließend können Sie eine actionMethod erstellen, die eine Teilansicht zurückgibt. Diese actionMethod kann in einer anderen Ansicht aufgerufen werden:
@Html.Action("StockWarningsPartial", "Stores")
Die Aktionsmethode kann folgendermaßen aussehen:
public ActionResult StockWarningsPartial() { .... return View("StockWarningsPartial", warnings); }
und die Ansicht 'StockWarningsPartial.cshtml' beginnt mit:
@{ Layout = null; }
damit Ihr umgebendes Layout nicht erneut gerendert wird.
quelle
Mit dieser Logik konnte ich etwas Ähnliches erreichen.
Innerhalb der .cshtml
@Html.Action("ActionMethodName", "ControllerName");
Innerhalb der Steuerung
[Route("some-action")] public ActionResult ActionMethodName() { var someModel = new SomeModel(); ... return PartialView("SomeView.cshtml", someModel); }
Und das ist es.
Wenn Sie Werte aus der CSC-Datei an die Aktionsmethode übergeben müssen, ist dies möglich.
quelle