AJAX не запускается, asp.net - PullRequest
       4

AJAX не запускается, asp.net

0 голосов
/ 14 сентября 2018

Теперь в контроллер поступает только значение AuctionId, остальные реквизиты либо нулевые, либо 0 ...

Вот форма:

<form id="createBid">
        <div id="frmBid" class="form-inline">
            <input name="Bidder" asp-for="@bidModel.Bidder" value="@User.Identity.Name" type="hidden" />
            <input name="AuctionId" asp-for="@bidModel.AuctionId" value="@Model.AuctionId" type="hidden" id="auctionId" />
            <label asp-for="@bidModel.Amount" />
            <input name="Amount" asp-for="@bidModel.Amount" />
            <button type="submit" id="submitBtn" class="btn btn-primary">Lägg</button>
        </div>
    </form>

Вот действие в контроллере:

public async Task<IActionResult> AddBid(BidModel Bid)
{
    var result = await _bidBusinessInterface.CreateBidAsync(Bid, Bid.AuctionId);
    if (result)
    {
        ViewBag.Message = "Bud lagt!";

    }
    else
    {
        ViewBag.Message = "Bud förlågt!";
    }
    return RedirectToAction("ViewDetails");
}

И тогда у нас есть фактический вызов AJAX:

    $('#createBid').on('submit', function (e)
    {
        e.preventDefault();

        var $form = $(this);
        $.ajax({
            url: '@Url.Action("AddBid")',
            type: 'POST',
            dataType: 'html',
            data: $form.serialize(),
            success: function (html)
            {
                $('#frmBid').html(html);
            }
        });
});

Я также выкладываю модель здесь, если нужно увидеть, где она идет не так:

public class BidModel
{
    [JsonProperty("BudID")]
    public string BidId { get; set; }
    [JsonProperty("Summa")]
    public int Amount { get; set; }
    [JsonProperty("AuktionID")]
    public string AuctionId { get; set; }
    [JsonProperty("Budgivare")]
    public string Bidder { get; set; }
}

Я очень благодарен за каждый ответ! Это давало мне покоя в течение 2 часов ..

1 Ответ

0 голосов
/ 14 сентября 2018

Вы неправильно используете помощников asp.

давайте возьмем этот пример кода:

<input name="Bidder" asp-for="@bidModel.Bidder" value="@User.Identity.Name" type="hidden" />

Вы устанавливаете name на «Bidder», это то, с чем будут связаны данные, когда вам нужно «Bid.Bidder», поскольку «Bid» - это имя объекта, который получает действие.

Теперь вам НЕ нужно устанавливать атрибут name, поскольку помощник asp-for сделает это за вас, он автоматически сгенерирует атрибуты name, id для вас.

Теперь убедитесь, что в верхней части страницы у вас есть @model YourNamespace.BidModel

и ссылаться на него так:

<input asp-for="@Model.Bidder" value="@User.Identity.Name" type="hidden" />

атрибуты будут сгенерированы автоматически, и модель должна быть правильно привязана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...