2011-11-01 25 views
6

Có cách nào để sử dụng (hoặc một cái gì đó simular)Có cách nào để sử dụng @ Html.HiddenFor cho mô hình hoàn chỉnh không?

@Html.HiddenFor 

cho toàn bộ mô hình của bạn.

Vì vậy, thay vì làm một cái gì đó như thế này:

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

sử dụng một cái gì đó như thế này (ví dụ này không hoạt động)

@Html.HiddenFor(model => Model) 

Tôi đã tìm kiếm nó trên stackoverflow và google. .. nhưng không tìm thấy bất cứ điều gì về nó.

Tôi cần giữ một số giá trị cho các mô hình khác nhau không được lưu vào db, vì vậy chỉ sử dụng Html.HiddenFor ID không phải là tùy chọn cho tôi.

Cảm ơn trước!

+0

Bạn không muốn làm điều này! Bạn chỉ nên có khóa chính của thực thể được thông qua, sau đó nhìn nó trở lại phía máy chủ ... nếu không khách hàng có thể thay đổi địa chỉ của họ vv. Nếu bạn không lưu chúng vào DB nhưng cần chúng tồn tại, sử dụng phiên hoặc cookie hoặc localstorage hoặc một cái gì đó thay vì – Milney

Trả lời

7

Chọn các thuộc tính bạn muốn trở thành một đầu vào ẩn và thêm HiddenInputAttribute trong mô hình của bạn như sau:

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

@Darin & @ Haythem cảm ơn, tôi sẽ kiểm tra cả hai câu trả lời cuối tuần này! – Gyocol

3

Bạn có thể xem qua số MVCContrib's Html.Serialize method. Đó là thi đua viewa sorta (và nội bộ nó thực sự sử dụng ViewState :-)).

Một cách tiếp cận khác là lưu trữ một id duy nhất làm trường ẩn và bên trong hành động điều khiển sử dụng id này để tìm nạp mô hình tương ứng từ kho dữ liệu cơ bản của bạn.

Các vấn đề liên quan