Non riesco a capire come inviare l'intero ViewModel al controller alla funzione 'Convalida e salva'.MVC 4 ViewModel non viene rinviato al controller
Ecco il mio controller:
[HttpPost]
public ActionResult Send(BitcoinTransactionViewModel transaction)
{
}
Qui è la forma nella vista:
<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" })
}
quando clicco su presentare, il conroller contiene il valore corretto del campo WalletAddress ma transaction.Transaction.Time
, transaction.Transaction.Location
, transaction.Transaction.TransactionId
sono vuoti.
È possibile inoltrare l'intero modello al controller?
Edit:
Quando Neppure non ricevo il walletAddress
nel controller. Tutto viene annullato! Quando rimuovo questa linea da sola: @Html.HiddenFor(m => m.Transaction.TransactionId);
funziona e ottengo la proprietà Token sul controller, ma quando la aggiungo, tutte le proprietà dell'oggetto transaction
sul controller sono NULL.
Ecco la 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; }
}
Tutte le idee?
EDIT: ho capito, la sua nella risposta segnata in basso ...
Mi piace questa risposta e ha senso, ma sfortunatamente non ha funzionato per me. Sembra che io sia bloccato in un vicolo cieco dove non importa quello che provo Non riesco a far tornare il sub-oggetto nel controller. Una cosa così frustrante. –
Ho avuto lo stesso problema. Ho avuto un ViewModel denominato FileViewModel e il mio parametro di azione è stato chiamato "file". L'ho cambiato in "_file" e ha funzionato per me. –
Life saver, grazie. – Chris