여기에도 몇 가지 비슷한 질문이 있지만이 문제를 해결할 수 없습니다. 결국 그것이 작동하기 때문에 입찰 거래가 아닌 것 같지만 버튼을 클릭 할 때 Ajax를 사용하여 숨겨진 div (팝업을 모방 함)를 표시하려고하면 디버그 할 때 메서드의 컨트롤러 (ConfirmMaxBid)가 두 번 호출됩니다 (훨씬 더 나는 때때로 더 많은 시간을 느낀다. 그리고 코드를 통해 흐름을 혼합한다. 즉 앞뒤로 움직인다. document.ready버튼을 클릭 할 때 Ajax 함수가 두 번 호출되었습니다.
$('#autobidButton').click(function (e) {
e.preventDefault();
var model =
{
AuctionEventId: $('#AuctionEventId').val(),
AuctionId: $('#AuctionId').val(),
Amount: $('#Amount').val()
};
$.ajax({
url: "/Lot/ConfirmMaxBid",
dataType: 'json',
type: "POST",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(model),
success: function (data) {
var amount = "$" + data.AutobidAmount;
$('#returnedCorrectedAmount').html(amount);
$('#AutobidAmount').val(data.AutobidAmount);
$('#confirmationMessage').text(data.AutobidConfirmationMessage);
$('#autoBidConfirmation').show();
}
});
});
그리고 마지막으로이 방법은 (일부가 두 번 이상,이 질문을 피하기 위해 호출 때
다음은보기
@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>
<script src="@Url.Content("~/Content/js/BidAndMaxBidConfirmation.js")" type="text/javascript"></script>
@{
var disableButton = Model.AuctionOpen ? "" : "bid-btn-disabled";
}
@using (Html.BeginForm("ConfirmMaxBid", "Lot"))
{
<fieldset>
<div class="lotdetail-maxbid-row">
<label>Your Max Bid</label>
@*<input id="Amount" class="radius2 text-box single-line valid" type="text" name="Amount" data-val-required="The Amount field is required." data-val-number="The field Amount must be a number." data-val="true">*@
@if (Model.AuctionOpen)
{
@Html.TextBoxFor(model => model.Amount, new {@class = "radius2 text-box single-line valid"})
}
else
{
@Html.TextBoxFor(model => model.Amount, new {@class = "radius2 text-box single-line valid", @disabled = "disabled"})
}
</div>
<input type="submit" id="autobidButton" value="Increase Max bid" class="btn btn-level2 btn-maxbid @disableButton" />
</fieldset>
<div id="autoBidConfirmation" class="lotdetail-modal" style="display: none;">
@Html.HiddenFor(model => model.AuctionId)
@Html.HiddenFor(model => model.AutobidAmount)
@Html.HiddenFor(model => model.AuctionEventId)
<h4 id="confirmationMessage"></h4>
<span id="returnedCorrectedAmount" class="lotdetail-modal-msg"></span>
<input name="button" value="Place bid" type="submit" class="btn btn-level2" />
<input id="cancelAutoBid" name="button" value="Cancel" type="submit" class="btn btn-level2 btn-cancel" />
</div>
}
입니다 그리고 여기라는 스크립트의 기능입니다 너무 길어)
public ActionResult ConfirmMaxBid(string button, BidOnAuctionViewModel model)
{
if(Request.IsAjaxRequest())
{
var confirmationMessage = "Confirm your bid";
var correctedAmount = model.Amount;
if (!CheckMaxBidFitsIncrementTier(model.Amount, model.AuctionEventId))
{
confirmationMessage = "This bid can't be placed, do you want to place the following instead?";
correctedAmount = CalculateNextBidAmountForWrongMaxAmount(model.Amount, model.AuctionEventId);
}
return Json(new
{
AutobidAmount = correctedAmount,
model.AuctionId,
model.AuctionEventId,
AutobidConfirmationMessage = confirmationMessage
});
}
if (button == "Place bid")
{
//Here's the code to do the stuff when confirming in the partial view
왜 이런 일이 발생하는지 알고 싶습니다. 사전에
감사
업데이트
어떤 경고 배치 한 후 나는 $ 후 (방법이 바로 성공의 함수의 마지막 행 다음에 다시 호출 볼 (디버깅 아주 원시적 인 방법을 것 같아요) ('#autoBidConfirmation'). show();)
:
같은 뭔가를 시도? 어딘가 시체에서 인라인인가요? –