ASP.NET Core 2, Taste, klicken Sie mit der Razor-Seiten ohne MVC

Als jemand darauf hingewiesen in einem Kommentar, Razor-Seiten nicht brauchen-Controller, wie Sie es gewohnt sind zu tun, in MVC. Ich habe nun auch Razor nicht mit einem einheitlichen Handhabung der button-click-Ereignis. Um etwas zu tun (in der "code-behind"), wenn der Benutzer auf eine Schaltfläche klicken, wir haben mindestens zwei Möglichkeiten:

  • verwenden Sie die Schaltfläche "senden"
  • verwenden Sie einen ajax-Aufruf

Finde ich eine MENGE Beispiele für die MVC, die zeigen, wie zu definieren, die Controller-Funktionen. Aber wie gesagt, ich habe keinen.

Daher bin ich versucht, zu verstehen, in beide Richtungen. Hier mein test cshtml:

<form method="post">
    <input type="submit" class="btn btn-primary" value="way1">Way 1/>
</form>

<button id="btn" type="button" class="btn btn-primary" value="way2">Way 2</button>

<script>
$(document).ready(function() {
    $("#btn").click(function (e) {
        e.preventDefault();
        $.ajax({
            url: "@Url.Action("Way2")",
            type: "POST",
            data: "foo",
            datatype: "text",
            success: function (data) {
                alert(data);
            }
        });
        return false;
    });
});
</script>

und hier die cshtml.cs:

public class TestModel : PageModel
{
private readonly MyContext _context;

public TestModel(MyContext context)
{
    _context = context;
}

public IActionResult OnPost()
{
    //here I can put something to execute 
    //when the submit button is clicked
}

public ActionResult Way2(string data)
{
    //this is never triggered
}

Fragen

  1. Mit der "Way1" (submit) ich bin in der Lage zu fangen, die auf Knopfdruck, aber mit einigen Nachteilen. Standardmäßig wird die Seite neu geladen wegen dem post. Manchmal brauche ich nicht, etwas zu ändern, aber rufen Sie ein C# - Funktion. Aber ich verstehe nicht, wie man den Umgang mit mehreren Schaltflächen. I. e. wenn ich 5 Tasten, wie man etwas anders machen, für jeden?
  2. Mit den "Way2" ich habe etwas falsch gemacht, da die Funktion in cs code wird nie erreicht, und ich bekomme einen Bad Request-Fehler (400). Hab ich was verpasst?

InformationsquelleAutor Mark | 2017-11-23

Schreibe einen Kommentar