Asp.net-Mvc-4
如何在 MVC 4 ActionLink 中加密查詢字元串 ID
如何將加密的 id 傳遞給
ActionLink. 這是我寫在我的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) }
以下是一些可用於編碼/解碼的簡單方法。編碼值不安全,如您所見,解碼它是微不足道的。如果您的目標是混淆 id,這將起作用。如果你需要保護它,你應該採取不同的方法。
public string Encode( string encodeMe ) { byte[] encoded = System.Text.Encoding.UTF8.GetBytes( encodeMe ); return Convert.ToBase64String( encoded ); } public static string Decode( string decodeMe ) { byte[] encoded = Convert.FromBase64String( decodeMe ); return System.Text.Encoding.UTF8.GetString( encoded ); }因此,您可以將這些方法放在您的控制器中,並使用 viewBag 將編碼的 TechId 傳遞給視圖
int techId = 1; var encoded = Encode(id.ToString()); ViewBag.Encoded = encoded;然後在您的連結中使用它
@Html.ActionLink(techName, "Details","Home", new { TopicID = ViewBag.Encoded },null)(不過,您確實應該考慮使用視圖模型。ViewBag 雖然是一種將數據傳遞給視圖的方便且簡單的方法,但並不被認為是最佳實踐。熟悉視圖模型和強類型視圖將使您的 mvc 生活更加美好將來更容易。更不用說,為那些跟隨你的人生成更清潔和更可維護的程式碼。)