c# - tutorial - asp.net mvc 6



Wie kann ich die Aktion, an die ein Formular gesendet wird, basierend auf der Schaltfläche in ASP.NET MVC ändern? (2)

Ich habe ein Formular, das wie folgt aussieht (Photoshop von Facebook) für unsere Nachrichtenansicht auf unserer ASP.NET MVC-Site.

Ich möchte die Funktionen "Als ungelesen markieren" und "Löschen" verwenden, die für ein Formular funktionieren, das so aussieht. Ich versuche herauszufinden, wie ich das mit HTML-Formularen machen kann.

Wie kann ich das "Als ungelesen markieren" auf eine Formular-URL übertragen und "Löschen" dasselbe Formular in eine andere URL senden?

Wenn Sie "Als ungelesen markieren" auswählen, möchte ich, dass das Formular an "/ Messages / MarkUnread" gesendet wird und wenn es die Schaltfläche "Löschen" ist, möchte ich das Formular an "/ Messages / Delete" senden ".

Ich möchte, dass dies funktioniert, ohne Javascript, und sobald es ist, werde ich das jQuery Forms-Plugin hinzufügen, so dass es eine Ajax senden wird, wenn JS aktiviert ist, sonst wird es eine normale Form Post.

https://ffff65535.com


Ich bin ein total MVC newb, aber ich glaube, dass das Formular nur zu einer Handlung reichen kann.

Das heißt, in der Aktion, an die Sie senden, weiß ich, dass Sie in der Lage sein werden, zu erkennen, auf welche Schaltfläche geklickt wurde, und die Dinge entsprechend zu behandeln, zB:

    [AcceptVerbs(HttpVerbs.Post)]
    public ViewResult Index(string btnCompose, string btnMarkAsRead, string btnDelete)
    {
        if (btnCompose != null)
        {
            // Compose was clicked, handle appropriately
        }
        else if (btnMarkAsRead != null)
        {
            // Mark As Read was clicked, handle appropriately
        }
        else if (btnDelete != null)
        {
            // Delete was clicked, handle appropriately
        }
    }

Dies setzt voraus, dass Ihre HTML-Elemente "btnDelete" usw. heißen.


Josh ist richtig, in MVC, ohne JavaScript, eine Form = eine Aktion

Sie können die Aktion von Josh mit einem Modifikator verwenden und die FormCollection als Parameter hinzufügen. Sie müssen nur sicherstellen, dass jedes Kontrollkästchen einen eindeutigen Namen hat und leicht zu identifizieren ist. IE: Wenn die Nachrichten-ID 20 ist, machen Sie den CheckBox-Namen chk20

[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Index(string btnCompose, string btnMarkAsRead, string btnDelete, FormCollection formCollection)
{
  if (btnCompose != null)
  {
    //Return the compose View
  }
  else if (btnMarkAsRead != null)
  {
    // Mark As Read was clicked, handle appropriately
    //Loop through every key in the collection looking for stuff that starts with chk
    foreach (string key in formCollection.Keys)
    {
      if (key.StartsWith("chk"))
      {
        //Do Mark Read Here
      }
    }
  }
  else if (btnDelete != null)
  {
   //Loop through every key in the collection looking for stuff that starts with chk
    foreach (string key in formCollection.Keys)
    {
      if (key.StartsWith("chk"))
      {
        //Do Mark Delete Here
      }
    }
  }
}

So etwas mag funktionieren ... Du musst es versuchen, um es zu sehen. Ich würde jQuery verwenden und selbst einen Beitrag zurück zur richtigen Aktion erstellen.





webforms