有没有办法使用@ Html.HiddenFor来获得完整的模型?

有没有办法使用@ Html.HiddenFor来获得完整的模型?

问题描述:

是否有你的整个模型的方式来使用(或东西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

选择你想成为一个隐藏的输入特性,在模型中添加HiddenInputAttribute如下:

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

@Darin&@ Haythem谢谢,我会测试这两周结束的答案! – Gyocol

您可以查看MVCContrib's Html.Serialize method。这是一种视图状态模拟(内部它确实使用ViewState :-))。

另一种方法是简单地将唯一标识存储为隐藏字段,并在控制器操作内部使用此标识从基础数据存储中获取相应的模型。