我似乎无法弄清如何将整个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为空。有没有办法将整个Model传回控制器呢?
编辑:
当我在控制器中甚至不接收walletAddress时。一切都被设置为null! 当我仅删除此行时:
@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; }
}
任何想法?编辑:我找到答案了,在下面标记的答案中...