1

我有一个看起来像这样的视图

    @model UI.Models.BidOnAuctionViewModel

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@{
    var disableButton = Model.AuctionOpen ? "" : "bid-btn-disabled";         
}

@using (Html.BeginForm("ConfirmBid", "Lot"))
{
    <fieldset>
        @Html.HiddenFor(model => model.AuctionId)

        <p>
            <label >&pound;@Model.NextBidAmount</label>
        </p>
        <p>
            @if (Model.AuctionOpen)
            {
                 <input type="submit" value="Place bid" class="bid-btn @disableButton" />
            }
        </p>
    </fieldset>
}

当我点击 Place bid 按钮时,我会转到 confirmBid 操作方法

[Authorize]
[HttpPost]
public ActionResult ConfirmBid(BidOnAuctionViewModel model)

问题是即使在视图中模型不为空,但由于某种原因,它在此操作方法中为空。为什么是这样?

4

1 回答 1

1

分析您的代码后,我发现了问题。实际上,您只是在显示NextBidAmount. 当表单再次发布时,模型对象失去了它的价值。

要在模型中保留其值,只需为它创建一个隐藏字段,就像您已经完成的那样AuctionId

@Html.HiddenFor(model => model.NextBidAmount)

这将解决您的问题。

于 2012-10-09T17:49:41.990 回答