2017-09-15 4 views
0

Erstens, ist es möglich, Daten auf die .netcore 2.0-Seiten mit Ajax zu buchen?Veröffentlichen von Daten mit Ajax zu Razor-Seite in .netcore 2.0

Zweitens, ersetzen Razor-Seiten (.Netcore 2.0) den MVC-Ansatz? Alternativer Ansatz?

$('#sum').click(function() { 
    $.ajax({ 
     type: 'POST', 

     url: '/Manifest/Sum/3/5', 
     success: function (result) { 
      alert("Succes y'all"); 
     } 
    }); 
}); 

public class IndexModel : PageModel 
{ 
    private readonly CloudSolution.Models.DomainData.ManifestContext _context; 

    public IndexModel(CloudSolution.Models.DomainData.ManifestContext context) 
    { 
     _context = context; 
    } 

    public IList<ManifestViewModel> ManifestViewModel { get;set; } 
    public IActionResult HelloAjax() 
    { 
     return Content("Hello from the controller!", "text/plain"); 
    } 

    [HttpPost, Route("/Manifest/Sum/{firstNumber}/{secondNumber}")] 
    public IActionResult Sum(int firstNumber, int secondNumber) 
    { 
     return Content((firstNumber + secondNumber).ToString(), "text/plain"); 
    } 
    public async Task OnGetAsync() 
    { 
     ManifestViewModel = await _context.ManifestViewModel.ToListAsync(); 
    } 
} 
+0

Was ist das Problem, das Sie haben? Und nein, korrigieren Sie mich, wenn ich falsch liege. .NET Core 2.0 verwendet MVC 6 Razor-Syntax ... Kein Ersatz – 12seconds

+0

Wenn ich Daten an einen MVC-Controller poste, kommen die Daten durch meine Controller-Methode, aber wenn ich es versuchte. netcore 2.0 rasiererseiten wird die methode nicht aufgerufen. – Decoder94

+0

Ich bin mir nicht sicher, ob das 'Route' Attribut noch unterstützt wird ... es scheint ein [offenes Problem] zu sein (https://github.com/aspnet/Mvc/issues/6605). –

Antwort

2

Erstens gibt es mehrere Möglichkeiten:

Verwenden Handler in Ihrer Razor Pages finden docs: https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/?tabs=visual-studio#multiple-handlers-per-page

oder Verwenden Muster MVC für Ajax (ish) Art von Anrufen und konfigurieren Middleware Damit alle Controller-Ergebnisse im Ordner "Pages" und nicht im Ordner "Views" angezeigt werden, können Sie alle .cshtml-Dateien zusammenhalten.

oder Verwenden Sie ein anderes JavaScript-Framework, um komplexere Seiten zu behandeln.

Zweitens ist Razor Pages (MVVM) kein Ersatz. Sie können wählen, beide oder beide zusammen zu verwenden.

Alles in allem denke ich, dass Seite Handler Am interessantesten sind auszuprobieren, Nahm einen Blick auf diesen Artikel, insbesondere der Abschnitt mit dem Titel: „Verwenden mehrerer GET oder POST-Aktionen via Handlers“: https://stackify.com/asp-net-razor-pages-vs-mvc/

+0

funktioniert Handler nur mit Schaltern zum Senden von Formularen? Was ich erreichen möchte, ist eine Drop-and-Drop-Funktionalität ohne die Seitenauffrischung. – Decoder94

+1

Abhängig davon, was Sie genau wollen, dass sich Ihre Clientseite nach dem Post verhält, hängt davon ab, wie Sie die Funktionalität aufbauen könnten. Wie weit wir mit Handlern gehen können, ist mir noch nicht klar. Was ich weiß ist, dass .net wird immer Ihre HTML-Server-Seite, was bedeutet, dass ohne Clientseite DOM Manipulation führt dies zu einer Seite aktualisieren. Also ich denke, Sie werden immer eine Art von Javascript wollen, um die Drag & Drop-Funktionalität zu "vervollständigen". –

1

2 Entscheidungen.

1) Versuchen Sie, einen Api-Controller hinzuzufügen. Super einfach. 2) Versuchen Sie es mit Seitenhandler Beispiel OnPostAjax() und Sie werden so etwas wie Index /? Handler = Ajax

Verwandte Themen