将模型传递给形式的动作方法

时间:2012-10-09 17:26:53

标签: asp.net-mvc-3 razor viewmodel actionmethod

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

    @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>
}

点击“放置出价”按钮后,我转到confirmBid操作方法

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

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

1 个答案:

答案 0 :(得分:1)

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

要在模型中保留其值,只需为AuctionId

创建一个隐藏字段
@Html.HiddenFor(model => model.NextBidAmount)

这将解决您的问题。