2012-01-09 124 views
0

我可以使用:@ Html.HiddenFor隱藏窗體上的字段,但是,仍然可以使用「查看源代碼」查看隱藏字段的值。mvc3 .net - 有沒有辦法在視圖中完全隱藏隱藏字段?

MVC3有沒有辦法隱藏視圖源中的隱藏字段 - 我想完全隱藏用戶的主鍵,但仍然通過模型將它從視圖傳遞給控制器​​,形成。

讚賞任何代碼片段或鏈接到一個例子。 謝謝

回答

1

好吧,把簡單的號碼。如果您打算通過表單發送密鑰,則無法從源中隱藏數據。

由於您沒有提及要發佈的主要關鍵字或哪種表單數據,因此很難提供任何其他建議。如果它是用戶的主鍵,那麼當然可以使用登錄會話,而不是通過表單發送密鑰,但在其他任何情況下,恐怕必須通過源代碼揭示主鍵。

0

您不能從源中隱藏字段。

但在某些情況下,您可以嘗試執行其他操作,例如不將ID傳遞給視圖。將其保存在控制器端,並在表單提交中使用它。當然你需要小心,但是它可以用TempData或ViewData來實現。這裏有個提示http://haacked.com/archive/2007/12/21/asp.net-mvc-helpers-for-repopulating-a-form.aspx

+0

感謝您的反饋。 我以爲你可能無法做到這一點。如果表單的用戶可以在源代碼中看到主鍵userId,這是不是安全問題? – user1079925 2012-01-09 14:44:43

+0

我想說的是,揭示特定記錄的某種標識符是正常的,但這也取決於您正在使用的數據類型。如果這可以說,用戶想要購買的圖書的BookId - 沒有理由向他隱藏該ID。如果這是更敏感的東西,你可能想掩蓋你的ID與SHA1哈希加上記錄所有權/權限控制 – torm 2012-01-09 15:10:45

+0

謝謝@torm,我想我可能會看看會話,看看我是否可以在那裏持有userId,然後讓控制器使用id的會話。 – user1079925 2012-01-09 15:14:22

0

如果你需要保留跨多個請求的信息,那麼利用服務器端的TempData集合,因爲它是由會話支持的,但其設計恰恰是爲了在短時間內保存信息。或者,如果您必須通過隱藏或其他高度爲零的HTML將數據推送到客戶端,則使用對稱加密或至少base64編碼(非常窮的人的方法使其遠離好奇的眼睛)對其進行加密。