I can't seem to figure out how to send back the entire ViewModel to the controller to the 'Validate and Save' function.

Here is my controller: 

```
[HttpPost]
public ActionResult Send(BitcoinTransactionViewModel transaction)
{
}

```

Here is the form in the view:

```
<li class="check">
    <h3>Transaction Id</h3>
     <p>@Html.DisplayFor(m => m.Transaction.TransactionId)</p>
</li>
<li class="money">
    <h3>Deposited Amount</h3>
    <p>@Model.Transaction.Amount.ToString()  BTC</p>
</li>
<li class="time">
    <h3>Time</h3>
    <p>@Model.Transaction.Time.ToString()</p>
</li>

@using (Html.BeginForm("Send", "DepositDetails", FormMethod.Post, new { transaction = Model }))
{

@Html.HiddenFor(m => m.Token);
@Html.HiddenFor(m => m.Transaction.TransactionId);

    @Html.TextBoxFor(m => m.WalletAddress, new { placeholder = "Wallet Address", maxlength = "34" })
    <input type="submit" value="Send" />    

    @Html.ValidationMessage("walletAddress", new { @class = "validation" })
}

```

When i click on submit, the conroller contains the correct value of the walletAddress field but `transaction.Transaction.Time`, `transaction.Transaction.Location`, `transaction.Transaction.TransactionId` are empty.

Is there a way i could pass the entire Model back to the controller?

Edit:

When i dont even receive the `walletAddress` in the controller. Everything gets nulled!
When i remove this line alone: `@Html.HiddenFor(m => m.Transaction.TransactionId);` 
it works and i get the Token property on the controller, but when i add it back, all the properties of the `transaction` object on the controller are NULL.

Here is the BitcoinTransactionViewModel:

```
public class BitcoinTransactionViewModel
    {
        public string Token { get; set; }
        public string WalletAddress { get; set; }
        public BitcoinTransaction Transaction { get; set; }
    }

public class BitcoinTransaction
    {
        public int Id { get; set; }
        public BitcoinTransactionStatusTypes Status { get; set; }
        public int TransactionId { get; set; }
        public decimal Amount { get; set; }
        public DateTime Time { get; set; }
        public string Location { get; set; }
    }

```

Any ideas?

**EDIT: I figured it out, its in the marked answer below...**