【问题标题】:How to pass id to MVC controller with Jquery and ajax [ASP.NET]如何使用 Jquery 和 ajax [ASP.NET] 将 id 传递给 MVC 控制器
【发布时间】:2018-09-10 08:04:51
【问题描述】:

我做错了什么? url 选项正常工作。段落标签给出正确的值(不隐藏时)。

这是我的html代码


 @foreach (var item in listTest)
        {
            <div id="pan" class="form-group panel panel-default">
                <p id="TestsId" class="hidden">@item.Id</p>
                <text>@item.Name</text>
                <text>@item.testTypeCategory.Category</text>
                <text>@item.testTypeName.Name</text>
                <text>@item.Price</text>
                <button class="btn btn-danger btn-cart" type="button" style="float:right">Add</button>
            </div>

js代码

 $(document).ready(function () {
    $('.btn-cart').click(function () {
        var myId = $('#TestsId').val();
    $.ajax({
        type: 'POST',
        url: '@Url.Action("AddToList")',
        dataType: 'json',
        data: { id:  myId},
        success: function (data) {
            var items = '';
            $.each(data, function (i, item) {
                var rows = "<tr>"
                    + "<td class='nameT'>" + item.Name + "</td>"
                    + "<td class='priceT'>" + item.Price + "</td>"
                    + "</tr>";
                $('#testTable tbody').append(rows);
            });
        },
    });
    return false;
    }); 
}); 

和控制器动作

    public JsonResult AddToList(int id)
    {
        cart.Add(_tests.GetAll().FirstOrDefault(j => j.Id == id));
        return Json(cart);
    }

控制器中的id始终为0

【问题讨论】:

  • var myId = $('#TestsId').val(); => var myId = $('#TestsId').text();
  • 成功了!谢谢
  • @PiotrStachaczyński,不,它没有。 var myId = $('#TestsId').text(); 只会返回带有 id="TestsId" 的第一个元素 - 您需要使用类名和相对选择器
  • 我知道我解决了,但我的问题的答案是正确的

标签: jquery asp.net json ajax asp.net-mvc


【解决方案1】:

就像 hikarunomemory 所说的使用 .text() 而不是 val() 因为它是一个段落而不是一个输入元素。

值得注意的是,因为它在一个循环中,你最终会得到多个具有相同 ID 的元素。因此,我会将其更改为查找一个类,因为重复的 Id 是无效标记,并使用 .closest() 确保选择正确的:

var myId = $(this).closest('.TestsId').text()

【讨论】:

  • 它必须是var myId = $(this).closest('.pan'),find('.TestsId').text(),其中元素是&lt;div class="pan form-group panel panel-default"&gt;
猜你喜欢
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 2023-01-28
相关资源
最近更新 更多