Ich habe ein ViewModel, das ich an eine Ansicht gebunden habe:
%Vor% Die Ansicht (und das Ansichtsmodell) wird verwendet, um Product
zu bearbeiten, damit ProductViewModel
eine ID-Eigenschaft hat, die der ID in der Datenbank entspricht.
Und um die ID zurück zum Controller zu schreiben, mache ich das in meinem Formular in der Ansicht:
%Vor%Auch wenn das funktioniert - ich habe mich gefragt, ob es eine bessere Möglichkeit gibt, die ID zurück auf den Controller zu stellen? Routenwerte vielleicht? oder ist das ein ziemlich Standardmuster / Ansatz?
Wenn ich eine GET-Aktion habe, die die ID in meiner Route enthält: /Products/Edit/1
, dann behalte ich sie normalerweise als Routenwert:
Dies ist jedoch eine reine Vorliebe von mir. Es gibt keinen richtigen oder falschen Weg, das zu tun.
Das Schöne an dieser Methode ist, dass Sie sie nicht mehr mit einem versteckten Wert übergeben müssen, da sie Teil der URL ist. Eigentlich, wenn Sie es mit einem versteckten Wert übergeben, glaube ich, dass es ignoriert wird.
Alternativ, da id Teil der Route ist, brauchen Sie nicht einmal einen separaten Parameter:
%Vor%Auch dies ist eine reine Vorliebe.
Ich denke, die Antwort ist, es kommt darauf an.
Wird Ihr gesamtes Objekt bearbeitet und zurückgeschickt? Wenn ja, habe ich vorgeschlagen, die ID als Teil des Modells zurückzugeben:
%Vor%Was ich denke, ist eine vollkommen gültige Sache zu tun. Aber sei vorsichtig. Wenn es sich bei der Ressource, die bearbeitet wird, um eine geschützte Ressource handelt, stellen Sie sicher, dass Sie überprüft haben, ob der Benutzer über die richtigen Berechtigungen verfügt.
Wenn es sich um eine teilweise Bearbeitung handelt, vielleicht nur um einen Kommentar über einen Ajax-Aufruf zu bearbeiten, wäre ich wahrscheinlich eher versucht:
%Vor%Wenn ich ein Modell in diesem Szenario erstelle, würde ich sehen, dass das Problem mit dem Overkill ... Privileg noch immer gilt:)
Alles was gesagt wird, ich bin selbst kein Experte:)
Übrigens ... Ich glaube nicht, dass mit dem versteckten Feld irgendetwas nicht stimmt, ich benutze es die ganze Zeit. Es ist jedoch ein Ajax-Anruf, der nicht benötigt wird, da es Teil Ihres Post-Ajax-Anrufs wäre.
Tags und Links asp.net-mvc asp.net post