【问题标题】:AJAX does not get triggered, asp.netAJAX 没有被触发,asp.net
【发布时间】:2018-09-14 16:52:51
【问题描述】:

现在它只将 AuctionId 值输入到控制器中,其他道具要么为 null 要么为 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 个小时..

【问题讨论】:

  • 生成的url是否正确?您是否尝试使用 Postman 呼叫您的控制器?您是否检查过数据/数据格式是否正确?我不认为serialize 是你应该使用的。
  • 生成的网址?是的,我知道控制器可以正常工作,我以前用过它,但没有 AJAX 请求
  • 在您的浏览器中,您看到请求了吗?请求结束后的http代码是200吗?
  • 您是否在浏览器的网络选项卡中看到 POST?你得到什么回应?
  • 不,我没看到:P

标签: c# asp.net ajax asp.net-core


【解决方案1】:

您错误地使用了您的 asp 助手。

让我们来看看这个代码示例:

&lt;input name="Bidder" asp-for="@bidModel.Bidder" value="@User.Identity.Name" type="hidden" /&gt;

您将name 设置为“Bidder”,这是数据将绑定的对象,当您需要“Bid.Bidder”时,因为“Bid”是操作接收的对象的名称。

现在您不需要设置name 属性,因为asp-for 助手会为您完成,它会自动为您生成名称、id 属性。

现在确保在页面顶部有@model YourNamespace.BidModel

并像这样引用它:

&lt;input asp-for="@Model.Bidder" value="@User.Identity.Name" type="hidden" /&gt;

属性会自动生成,模型应该正确绑定。

【讨论】:

  • 问题是他们要在拍卖中创建一个新的出价,而拍卖是绑定到视图的模型,这就是我的斗争
  • @Charlie 你的操作上方有[HttpPost] 属性吗?
  • 是的,我有,奇怪的是。我现在将 AuctionID 值输入控制器,但其余为空:我用表单现在的外观更新我的问题
猜你喜欢
  • 2012-01-02
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2012-06-03
  • 2019-11-07
  • 2018-09-01
相关资源
最近更新 更多