Я не могу понять, как отправить весь ViewModel весь контроллер на функцию «Проверить и сохранить».MVC 4 ViewModel не отправляется обратно контроллеру
Вот мой контроллер:
[HttpPost]
public ActionResult Send(BitcoinTransactionViewModel transaction)
{
}
Вот форма в виде:
<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" })
}
Когда я нажимаю на представить, то Conroller содержит правильное значение поля walletAddress но transaction.Transaction.Time
, transaction.Transaction.Location
, transaction.Transaction.TransactionId
пустые.
Есть ли способ, которым я мог бы передать всю модель обратно контроллеру?
Edit:
Когда я даже не получить walletAddress
в контроллере. Все становится нулевым! Когда я удаляю только эту строку: @Html.HiddenFor(m => m.Transaction.TransactionId);
это работает, и я получаю свойство Token на контроллере, но когда я его добавляю, все свойства объекта transaction
на контроллере равны NULL.
Вот 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; }
}
Любые идеи?
EDIT: Я понял это, его в маркированной ответ ниже ...
Мне нравится этот ответ, и это имеет смысл, но, к сожалению, не работает для меня. Кажется, я застрял в тупике, где бы я ни старался, я не могу заставить под-объект вернуться в контроллер. Такое разочарование. –
У меня была такая же проблема. У меня была ViewModel с именем FileViewModel, и мой параметр action был назван «file». Я изменил его на «_file», и это сработало для меня. –
Life saver, спасибо. – Chris