【问题标题】:How Can I replace javascript url with array?如何用数组替换 javascript url?
【发布时间】:2021-08-08 09:08:38
【问题描述】:

我已经在jquery中编写了一个代码来替换URL链接和数组。

<form action='' method="post" id="bulkDeleteForm">
        <button class='button-secondary-warning' id="bulkDelete" style="margin-left: 73%; margin-top: 2%"><span class='fas fa-times'></span>Bulk Delete</button>
    </form>
        $("#bulkDeleteForm").submit(function (event) {
            var assignments = [1,2,3,4,5]; //example array
            var clinicalAssignments = ["4","7","8","9"]; //example array

            var url = '@Url.Action("BulkDelete", "Assignments", new { schoolId = school.Id, courseId = Model.Course.Id, assignments = "-1", bulkClinicalAssignments = "-2" })';
            url = url.replace("-1", assignments);
            url = url.replace("-2", clinicalAssignments);
           
            $("#bulkDeleteForm").attr('action', url);
        });

现在,当表单提交了分配的值并且 bulkClinicalAssignments 不会被替换为数组时,它是逗号分隔的值。如何用数组替换该参数?

【问题讨论】:

  • 最好创建 url 部分虎钳并将数组值添加到其中。可以解决你的问题
  • 最好只创建一个$.ajax({method:"POST", data: { assignments, clinicalAssignments }, url: '@Url.Action...'(没有-1/-2 占位符的Url.Action)并让jquery POST 为您服务-无论如何您都不希望在POST 的URL 上使用这些参数,它们应该在帖子的body 中。不要忘记从.submitreturn false 并处理页面的重新加载。
  • 或者,在您的form 中使用&lt;input type='hidden'&gt;,设置其中的值并正常发布/提交表单。像 POST 那样乱用 URL 只是在问问题。

标签: javascript jquery arrays asp.net-mvc asp.net-core


【解决方案1】:

这是一个用数组替换 javascript url 的演示:

js(url中的数组看起来像array=xxx&amp;array=xxx&amp;array=xxx,你需要使用@Html.Raw(),这样url中就会有&amp;amp;而不是&amp;amp;):

$("#bulkDeleteForm").submit(function (event) {
            var assignments = [1, 2, 3, 4, 5]; //example array
            var clinicalAssignments = ["4", "7", "8", "9"]; //example array
            var url = "@Html.Raw(Url.Action("BulkDelete", "Assignments", new { schoolId = 1, courseId = 2, assignments = "-1", bulkClinicalAssignments = "-2" }))";
            var assignmentsUrl = "";
            assignments.forEach((element) => { assignmentsUrl += "assignments=" + element + "&" });
            url = url.replace("assignments=-1&", assignmentsUrl);
            var clinicalAssignmentsUrl = "";
            clinicalAssignments.forEach((element) => { clinicalAssignmentsUrl += "bulkClinicalAssignments=" + element + "&" });
            url = url.replace("bulkClinicalAssignments=-2", clinicalAssignmentsUrl.substring(0, clinicalAssignmentsUrl.length - 5));
            $("#bulkDeleteForm").attr('action', url);
    });

型号:

public class ArrayModel
    {
        public int schoolId { get; set; }
        public int courseId { get; set; }
        public List<int> assignments { get; set; }
        public List<int> bulkClinicalAssignments { get; set; }

    }

行动:

public IActionResult BulkDelete(ArrayModel a)
        {
            return Ok();
        }

结果:

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 2011-09-14
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多