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
は空です。
モデル全体をコントローラに戻す方法はありますか?
編集:私は、コントローラにwalletAddress
を受信してもいけない
。すべてがゼロになる! 私はこの行だけを削除します:@Html.HiddenFor(m => m.Transaction.TransactionId);
コントローラ上でトークンプロパティを取得しますが、コントローラに追加するとコントローラの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; }
}
任意のアイデア?
編集:私はそれを考え出し、その下のマークの答えで...
私はこの答えが好きですが、それは意味がありますが、残念なことに私にとってはうまくいきませんでした。私は何をしようとしてもサブオブジェクトをコントローラに戻すことはできません。そのようなイライラしたこと。 –
私も同じ問題がありました。私はFileViewModelという名前のViewModelを持っていて、私のアクションパラメータは "file"という名前でした。私はそれを "_file"に変更してくれました。 –
ライフセーバー、ありがとう。 – Chris