我有一個表單提交。我系結了四個屬性。一個是字串,一個是整數,另外兩個是類物件。這是我的后端:
` [BindProperty]
public PortfolioModel Portfolio { get; set; }
[BindProperty]
public StockModel Stock { get; set; }
[BindProperty]
public string StockSymbol { get; set; }
[BindProperty]
public int QuantityToTrade { get; set; }`
這些都在 OnGetAsync() 中填充。它們在除錯模式下是正確的。這是我的前端:
` <form method="post">
<div>
Qty. <input type="text" name="QuantityToTrade" id="QuantityToTrade" />
<input type="hidden" asp-for="@Model.StockSymbol" />
<input type="hidden" asp-for="@Model.Stock" />
<input type="hidden" asp-for="@Model.Portfolio" />
<input type="submit" value="Buy" asp-page-handler="Buy" />
<input type="submit" value="Sell" asp-page-handler="Sell" />
</div>
</form>`
當我提交表格時:
` public async Task<IActionResult> OnPostBuyAsync()
{
OrderModel orderPlaced = null;
if (QuantityToTrade > 0)
{
OrderModel orderModel = new OrderModel()
{
PortfolioId = Portfolio.Id,
StockId = Stock.Id,
StockSymbol = StockSymbol,
QuantityTraded = QuantityToTrade,
};
}
}`
問題是,在 OnPostBuyAsync() 中,StockSymbol 和 QuantityToTrade 都是正確的。但是 Portfolio 和 Stock 的整數欄位全為 0,所有其他欄位為空。為什么類物件沒有正確發布?
這個問題在 stackoverflow 上最常見的答案是屬性設定器被設定為私有。但就我而言,它們都是公開的......
uj5u.com熱心網友回復:
標簽助手無法將復雜模型與單個輸入系結。您需要指定您想要在復雜模型中獲得的所有屬性。
對于您的場景,它應該是:
<div>
Qty. <input type="text" name="QuantityToTrade" id="QuantityToTrade" />
<input type="hidden" asp-for="@Model.StockSymbol" />
<input type="hidden" asp-for="@Model.Stock.Id" /> //specify the property
<input type="hidden" asp-for="@Model.Portfolio.Id" /> //specify the property
<input type="submit" value="Buy" asp-page-handler="Buy" />
<input type="submit" value="Sell" asp-page-handler="Sell" />
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/537048.html
