So verschlüsseln Sie die Abfrage-string-ID in mvc4 ActionLink
Hallo alle, wie kann ich pass das verschlüsselte id in ActionLink
, das ist, was ich geschrieben in meinem view
@model IEnumerable<forumAPP.tblTechnology>
@foreach (var item in Model)
{
string techName=item.TechName;
@Html.ActionLink(techName, "Details","Home", new { TopicID = item.TechID },null) //Here I would like to encrypt the TopicID
<br />
<br />
@Html.DisplayFor(modelItem => item.TechDesc)
}
- Welche Art der Verschlüsselung an, so das Sie verwenden möchten?
- Jede Art von Verschlüsselung anstatt Seite als
http://localhost:1931/Home/Details?TopicID=1
ich möchtehttp://localhost:1931/Home/Details?TopicID=Ek7vP1YwVhc=
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind ein paar einfache Methoden, die Sie verwenden können, um zu Kodieren/Dekodieren.
Der codierte Wert ist nicht sicher, und wie Sie sehen können, Decodierung trivial ist. Wenn Ihr Ziel ist zu verschleiern die id, das wird funktionieren. Wenn Sie brauchen, um sichere es, sollten Sie einen anderen Ansatz.
So konnten Sie diese Methoden in Ihrem controller, und übergeben Sie die codierte TechId, um die Ansicht mit viewBag
Und dann verwenden Sie es in Ihrem link
(Obwohl, sollten Sie wirklich erwägen Sie die Verwendung einer view-Modell. ViewBag, während eine convienent und einfache Art, Daten weiterzugeben, um die Ansicht ist nicht als best-practice. Unbefangen mit der view-Modelle und stark typisierte Ansichten machen Sie Ihre mvc-Leben viel einfacher in der Zukunft. Nicht zu erwähnen, produzieren sauberer und wartbarer code, für diejenigen, die Euch Folgen.)
Fügen Sie Einen Ordner mit zwei Klassen
Klasse 1 : EncryptedActionParameterAttribute
Klasse 2 : MyExtensions
Controller
Ihrer Ansicht
fügen Sie eine using-Anweisung
HttpUtility.ParseQueryString
(Dokumentation) statt der Analyse es manuell.Stieß ich auf diese, bei der Suche nach einer sicheren Methode, dies zu tun. Falls jemand anderes möchte dies tun, sicher, Sie können die MvcSerializer (ich fand es in der MVC futures 3-Projekt, ich bin nicht sicher, ob es enthalten ist in MVC 4). Zum Beispiel:
Und dann den Prozess rückgängig zu machen...
Dieser ist toll, weil ohne zusätzlichen Aufwand verschlüsselt und signiert die Daten. Die futures Projekt umfasst auch einige Attribute, damit dies geschieht automatisch während der Modell-Bindung.