将带有 Ajax 的按钮值发送到 .net 核心中的控制器

Send button value with Ajax to Controller in .net core

我快要发疯了,想弄清楚这个问题。 首先,我正在使用 entity framework 和模型等。因此,在我看来,我正在遍历我的所有对象,每个对象都有独特的属性——其中一个属性我想发送到我的控制器,它做了一些事情,然后重新加载页面。

我的控制器class如下:

 public IActionResult Index()
        {
            return View(_context.Modules.ToList());
        }

        [HttpPost]
        public IActionResult LoadModule(string packageName)
        {
            //... do some things here
            return RedirectToAction("Index");
        }

我的看法如下:

<div class="container">
    <div class="row">
        @foreach (var m in Model)
        {
            <div class='col-sm-4'>
                <div class="card border-secondary mb-3">                   
                    <div class="card-body">
                        <div class="row">
                            <button class="btn btn-outline-primary" id="SendValue"
                                type="submit" value="@m.IntegrationPoint">
                                Execute Package
                            </button>
                        </div>
                    </div>
                </div>
                <br />
            </div>
        }
    </div>
</div>

还有我的 Jquery/Ajax:

<script>
    $(document).ready(function() {
    $("#SendValue").click(function(){
        var val = $(this).val();

    $.ajax({
    type:"POST",
    url: '/ExampleModuleController/LoadModule',
    dataType: 'json',
    data:{String:val}
    })
    .fail(function(){alert("fail")})
    .done(function(){alert("success")})

    });
    });
</script>

A link 到 fiddle 以便于查看 html。

我在这里做错了什么?它甚至似乎没有记录我的按钮点击或任何东西。

将以下代码添加到您的视图中

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

url: '/ExampleModuleController/LoadModule',改成url: '@Url.Action("LoadModule", "ExampleModule")?IntegrationPoint=' + val ,

此外,在 Controller 中,将参数名称更改为 string IntegrationPoint在 LoadModule 操作中。

注意:因为.fail(function(){alert("fail")})在前面,所以会提示失败信息。

结果: