我似乎无法弄清楚如何将整个 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" })
}
当我单击提交时,控制器包含 walletAddress 字段的正确值,但是,transaction.Transaction.Time
是空的。transaction.Transaction.Location
transaction.Transaction.TransactionId
有没有办法可以将整个模型传回控制器?
编辑:
当我什至没有收到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; }
}
有任何想法吗?
编辑:我想通了,它在下面的标记答案中......