2011-11-01 141 views
6

是否有你的整個模型的方式來使用(或東西simular)有沒有辦法使用@ Html.HiddenFor來獲得完整的模型?

@Html.HiddenFor 

因此,而不是做這樣的事情:

@Html.HiddenFor(model => Model.Person.Name) 
    @Html.HiddenFor(model => Model.Person.LastName) 
    @Html.HiddenFor(model => Model.Address.Street) 

使用這樣的事情(這個例子不工作)

@Html.HiddenFor(model => Model) 

我已經尋找它的計算器和谷歌。 ..但沒有發現任何關於它。

我需要堅持不保存到數據庫的不同模型的一些值,所以只使用Html.HiddenFor ID不是我的選擇。

在此先感謝!

+0

你不想這樣做!你應該只傳遞實體的主鍵,然後將其備份到服務器端......否則客戶端可以更改他們的地址等等。如果你沒有將它們保存到數據庫但需要它們保留,請使用會話或cookie或本地存儲或其他東西 – Milney

回答

7

選擇你想成爲一個隱藏的輸入特性,在模型中添加HiddenInputAttribute如下:

public class MyModel 
{ 
    [HiddenInput] 
    public int MyProperty { get; set; } 
} 
+0

@Darin&@ Haythem謝謝,我會測試這兩週結束的答案! – Gyocol

3

您可以查看MVCContrib's Html.Serialize method。這是一種視圖狀態模擬(內部它確實使用ViewState :-))。

另一種方法是簡單地將唯一標識存儲爲隱藏字段,並在控制器操作內部使用此標識從基礎數據存儲中獲取相應的模型。

相關問題