Is there some way to use @Html.HiddenFor for compl

2020-02-11 05:48发布

问题:

Is there a way to use (or something simular)

  @Html.HiddenFor 

for your whole model.

So instead of doing something like this:

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

use something like this (this example doesn't work)

  @Html.HiddenFor(model => Model)

I've already searched for it on stackoverflow and google...but haven't found anything about it.

I need to hold on to some values for different models that aren't saved into db, so using only Html.HiddenFor the ID is not an option for me.

Thanks in advance!

回答1:

Select the properties you want to be in a hidden input and add the HiddenInputAttribute in your model as follows:

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


回答2:

You may take a look at the MVCContrib's Html.Serialize method. It's sorta viewstate emulation (and internally it indeed uses ViewState :-)).

An alternative approach would be to simply store an unique id as a hidden field and inside the controller action use this id to fetch the corresponding model from your underlying data store.