In MVC5 gibt es @Ajax.ActionLink
das ist nützlich, um nur eine Teilansicht zu aktualisieren, anstatt die gesamte Ansicht neu zu laden. Anscheinend wird in MVC6 nicht mehr unterstützt.Ajax.ActionLink Alternative mit MVC Kern
Ich habe versucht, mit @Html.ActionLink
wie folgt aber nicht die Form aktualisieren, es Rückkehr nur die Teilansicht:
Ausblick:
@Html.ActionLink("Update", "GetEnvironment", "Environments", new { id = Model.Id }, new
{
data_ajax = "true",
data_ajax_method = "GET",
data_ajax_mode = "replace",
data_ajax_update = "environment-container",
@class = "btn btn-danger"
})
Kontrolle:
public async Task<ActionResult> GetEnvironment(int? id)
{
var environments = await _context.Environments.SingleOrDefaultAsync(m => m.Id == id);
return PartialView("_Environment",environments);
}
Teilansicht:
@model PowerPhysics.Models.Environments
this is a partial view
Dann versuchte ich ViewComponents. Wenn die Seite lädt die Komponente korrekt funktioniert, aber ich verstehe nicht, wie später nur die Komponente aktualisieren (zum Beispiel mit einer Taste):
Ausblick:
@Component.InvokeAsync("Environments", new { id = Model.Id }).Result
Komponente:
public class EnvironmentsViewComponent : ViewComponent
{
public EnvironmentsViewComponent(PowerPhysics_DataContext context)
{
_context = context;
}
public async Task<IViewComponentResult> InvokeAsync(int? id)
{
var environments = await _context.Environments.SingleOrDefaultAsync(m => m.Id == id);
return View(environments);
}
}
Wie kann ich nur einen Teil einer Ansicht aktualisieren, indem ich PartialViews in MVC6 verwende?
Von Javascript machen einen Ajax-Aufruf an die Aktion, die die Teilansicht zurück. Rufen Sie beim erfolgreichen Rückruf von ajax call den HTML-Code von result ab und aktualisieren Sie Ihren Container. – Developer
Ja, ich könnte Javascript benutzen, aber ich frage mich, ob es einen besseren Weg mit MVC6 und HMTL5 gibt. Vielleicht mache ich etwas falsch im Code. Am wichtigsten möchte ich verstehen, was die beste Praxis ist. – AC70