【问题标题】:Call the same function调用相同的函数
【发布时间】:2021-09-07 09:46:44
【问题描述】:

我希望无论单击哪个按钮,我都想调用相同的函数。 现在我在 View 上有六张卡,但首先只工作一张。其他工作

我的看法

<h2>Our workouts</h2>
    <div class="container">
        <div class="row">
            @foreach (var item in Model)
            {
                <div class="col-md-4">
                    <div class="card" style="width: 18rem;">
                        <img src="~/Content/not-found-image.jpg" class="card-img-top" alt="...">
                        <div class="card-body">
                            <h5 class="card-title">@item.Name</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                            <div id="textButton">
                                @*<a href="~/TrainingType/ListCoach" id="btnSave1" class="btn btn-primary">Go to anywhere</a>*@
                                <a id="btnNewSave" class="btn btn-primary">Go to anywhere</a>
                                <input type="text" id="getValue" value="@item.Id" hidden />
                            </div>
                        </div>
                    </div>
                </div>
            }
        </div>
    </div>

我的控制器:

    [HttpGet]
    public ActionResult ListCoach(int? Id)
    {

        var ChoachList = _TraningService.Coach(Id);
        return View(ChoachList);
        
    }

脚本 我从查看使用助手部分调用我的脚本

@section scripts {
    <script>
        $(document).ready(function () {
            $("#btnNewSave").click(function () {
                var data = $("#getValue").val();
                $.ajax({
                    type: "GET",
                    url: '/TrainingType/ListCoach',
                    data: { id: data },
                    success: function (data) {
                        console.log(data);
                        window.location.href = '/TrainingType/ListCoach';
                        return data;
                    },
                    error: function () {
                        $("#loader").fadeOut("slow");
                        console.log("error1");
                    }
                });
            });
        });
    </script>
}

【问题讨论】:

  • 给你的按钮一个 css 类,例如some-class 然后将您的 jQuery 代码更改为 $('.some-class').click(function () { ... })
  • 你有类型 &lt;a&gt;type="button 在这种情况下你必须使它们相似的类型或通过 Id 调用不同的函数然后在内部调用相同的函数。
  • 请尝试更新后的答案。它会相应地解决您的问题。

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


【解决方案1】:

您应该尝试这种方式,因为您的按钮类型根据当前场景 &lt;a&gt;button 不同,因此您可以尝试以下方式。

脚本:

@section scripts {
    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
    <script>
        function PassToContoller(data) {
            //alert(data);
            $.ajax({
                type: "GET",
                url: '/UserLog/AnotherListCoach',
                data: { id: data },
                success: function (data) {
                    console.log(data);
                    window.location.href = '/appUser/ManageAccount';
                    return data;
                },
                error: function () {
                    $("#loader").fadeOut("slow");
                    console.log("error1");
                }
            });
        }
        $(document).ready(function () {
            $("a[name=link]").on("click", function () {
                var valueOfClickedTag = $(this).data("index");
                alert("Clicked On Anchor: " + valueOfClickedTag);
                var callFunc = PassToContoller(valueOfClickedTag)
            });
      
            $(":button[id=GoToAnywhere3]").on("click", function () {
                var valueOfClickedBtn = $(this).data("index");
                var callFunc = PassToContoller(valueOfClickedBtn )
            });
            


        });
    </script>
}

Razor HTML:

<div class="container">
    <div class="row">
        @foreach (var item in Model)
        {
            <div class="col-md-4">
                <div class="card" style="width: 18rem;">
                    @*<img src="~/Content/no_foto.png" class="card-img-top" alt="...">*@
                    <div class="card-body">
                        <h5 class="card-title">@item.StudentID</h5>
                        <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        <div id="textButton">
                            <a href="#"  class="btn btn-primary" data-index="@item.Name" name="link">Go to anywhere</a>
                            <a  class="btn btn-primary" data-index="@item.Name"  name="link">Go to anywhere</a>
                            <input class="btn btn-primary" type="button" id="GoToAnywhere3" data-index="@item.StudentID" value="Save" />
                            <input type="text" class="inputVal"  id="getValue" value="@item.Name"  hidden />
                        </div>
                    </div>
                </div>
            </div>
        }
    </div>
</div>

输出:

注意: &lt;input type="text" class="inputVal" id="getValue" value="@item.StudentID" hidden /&gt; 不再需要了。

希望它能彻底解决您的问题。

【讨论】:

  • 谢谢先生。但现在无论我做什么,我都会得到相同的 ID。 link
  • 所以您想根据按钮点击获得价值,例如,如果点击按钮 3,您想要获得的价值?
  • 当我点击&lt;a id="btnNewSave" class="btn btn-primary"&gt;Go to anywhere&lt;/a&gt; 时,我想获取 id 并传递给我的控制器。现在,无论我点击什么,我的视图上的每个按钮都只会得到一个 ID
  • 好的,等会儿
  • 我提供的解决方案根据您的要求和场景相应地解决了您的问题。
【解决方案2】:

首先使用button 类型而不是a。通过该更改,您可以通过两种方式使用 onclick 事件:

第一个选择:

<button class="btn btn-primary list-coaches" onclick="listCoaches()">List Coaches</button>

function listCoaches() { ... }

第二选择:

<button class="btn btn-primary list-coaches">List Coaches</button>

$('.list-coaches').click(function() { ... });

【讨论】:

  • 我不想使用 OnClick 我听说这是不好的做法
  • @Boris 在这种情况下您可以使用第二个选项
猜你喜欢
  • 2018-10-27
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多