繁体   English   中英

如何在 jquery 事件处理程序上动态获取 mvc model?

[英]How can I fetch the mvc model dynamically on a jquery event handler?

我正在使用 asp.net 内核和 MVC 架构。 我在单击按钮时有一个 jquery 事件处理程序。 如果用户单击按钮,我将根据从 c# model 获取的数据对 DOM 应用不同的更改。 我需要的 model 中的数据会根据用户输入而变化。 但由于事件处理程序仅在启动时执行,我的 model 中的数据反映了我的 model 的初始 state。

我的 javascript:

    $(document).on("click", ".edit-log-child", function () {
            var NameCategory = $(this).data('id');

            /*some DOM change*/

            var json = @Json.Serialize(@Model.Categories);
            if (JSON.stringify(json) != JSON.stringify("{[]}"))
            {
                 var currentCategory = json.find(element => element.name == NameCategory);
                 ProcessEditCategorie(currentCategory);

            }

        });

有没有办法从我的 javascript 函数/事件处理程序中获取我当前的 model ?

您可以使用表单帖子或 ajax:

1.form post(提交表单到action,action返回一个包含你想要的数据的视图):

视图(GetData1.cshtml):

@model IEnumerable<string>
<form method="post">
    <input name="id" id="id"/>
    <input type="submit" value="submit" />
</form>

行动:

public IActionResult GetData1(string id) {
            List<string> l = new List<string> { "a", "b", "c" };
            return View(l);
        }

结果: 在此处输入图像描述 2.ajax(当按钮点击时,从动作中获取数据并且不会刷新页面):

视图(GetData1.cshtml):

    <input name="id" id="id"/>
<button onclick="getdata()" >submit</button>
<script>
        function getdata() {
           $.ajax({
                    type: "POST",
                url: '@Url.Action("GetData2", "Test")',
                data: { "id": $("#id").val() }
                 }).done(function (data) {

                });
        }
    </script>

动作(测试控制器):

public List<string> GetData2(string id)
    {
        List<string> l = new List<string> { "a", "b","c" };
        return l;
    }

结果: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM