Razor Pages Javascript Ajax 未将参数传递给 c#

毛笔字

我有一个 Javascript 函数,它的目的是将数组传递回我的 c# 代码

我已经让它到达 c# 代码,但它从不传递参数

我的Javascript如下

 var errorsubmits = [];
    var filelists = [];
    var nameselect = document.getElementById("username");
    var nameselected = nameselect.options[nameselect.selectedIndex].text;
    if (nameselected.includes("User"))
        errorsubmits.push("User Name");
    var prioritylevel = document.getElementById("priority");
    var priorityselected = prioritylevel.options[prioritylevel.selectedIndex].text;
    if (priorityselected.includes("Priority"))
        errorsubmits.push("Priority");
    var table = document.getElementById("FileTable");
    var counter = 0;
    var filename = "";
    var images = "";
    var envs = "";
    var printmethod = "";
    var encmethod = "";
    var colour = "";
    var commentsforprint = "";
    var commentsforenclose = "";
    for (var i = 1, row; row = table.rows[i]; i++) {
        for (var j = 0, col; col = row.cells[j]; j++) {
            if (counter == 0) {
                if (j == 0)
                    filename = table.rows[i].cells[j].children[0].value;
                if (j == 1)
                    images = table.rows[i].cells[j].children[0].value;
                if (j == 2)
                    envs = table.rows[i].cells[j].children[0].value;
                if (j == 3)
                    printmethod = table.rows[i].cells[j].children[0].value;
                if (j == 4)
                    encmethod = table.rows[i].cells[j].children[0].value;
                if (j == 5)
                    colour = table.rows[i].cells[j].children[0].value;
            }
            else {
                if (j == 1) {
                    if (table.rows[i].cells[j - 1].innerHTML.includes("Print"))
                        commentsforprint = table.rows[i].cells[j].children[0].value;
                    else
                        commentsforenclose = table.rows[i].cells[j].children[0].value;
                }

            }
        }
        if (i % 3 == 0) {
            if (filename == "")
                errorsubmits.push("Filename (row:" + i + ")");
            if (images == "")
                errorsubmits.push("Images (row:" + i + ")");
            if (envs == "")
                errorsubmits.push("Envs (row:" + i + ")");
            if (printmethod.includes("Method"))
                errorsubmits.push("Print Method (row:" + i + ")");
            if (encmethod.includes("Method"))
                errorsubmits.push("Enc Method (row:" + i + ")");
            if (colour.includes("?"))
                errorsubmits.push("Colour (row:" + i + ")");
            // alert(filename + "\n" + images + "\n" + envs + "\n" + printmethod + "\n" + encmethod + "\n" + colour + "\n" + commentsforprint + "\n" + commentsforenclose);
            filelists.push(nameselected + "\t" + priorityselected + "\t" + document.getElementById('Email').textContent + "\t" + filename + "\t" + images + "\t" + envs + "\t" + printmethod + "\t" + encmethod + "\t" + colour + "\t" + commentsforprint + "\t" + commentsforenclose)
            filename = "";
            images = "";
            envs = "";
            printmethod = "";
            encmethod = "";
            colour = "";
            commentsforprint = "";
            commentsforenclose = "";
            counter = 0;
        }
        else {
            counter++;
        }
    }
    if (errorsubmits.length != 0) {
        alert("Cannot submit!\nThe following lines need filling:\n" + errorsubmits.join("\n"));

    }
    else {
        $.ajax({
            url: '?handler=Test',
            contentType: 'application/json',
            data: JSON.stringify(filelists)

        });
    }

我的 C# 代码目前无功能,因为我无法获取数据是这样的

public JsonResult OnGetTest(IEnumerable<object>x)
    {
        return new JsonResult("TEST");

    }

我做了一个 alert(JSON.stringify(filelists)) 所以我知道这有效

(如果可能,我想传递原始数组而不是将其字符串化,但我正在遵循另一个 SO 建议)

穆罕默德·萨吉德

url'?handler=Test'发送请求类似于https://localhost:44389/?handler=Test&filelists=%5B%22nameselected%22%2C%22nameselected1%22%5D,因为它是一个HttpGet请求而不是一个POST.

根据评论编辑

1 - 函数JS:

推送数组中的任何字符串filelists,并将您的数据更改为{ "filelists": JSON.stringify(filelists) }

var filelists = [];
// push strings here
$.ajax({
   url: '?handler=Test',
   contentType: 'application/json',
   data: { "filelists": JSON.stringify(filelists) }
});

2 - 在服务器端

public JsonResult OnGetTest(string filelists)
{
   IEnumerable<string> files = JsonConvert.DeserializeObject<IEnumerable<string>>(filelists);

   return new JsonResult("TEST");
}

请注意,如果您需要在数组中发送javascript对象,您应该创建用于反序列化数据的

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Razor Pages AJAX网址ID参数

.NET CORE Razor Pages对C#方法的Ajax调用

使用AJAX删除Razor Pages

在 .NET Core Razor Pages 中从 JQuery Ajax 调用 C# 方法

将Razor变量传递给JavaScript函数

将javascript值传递给razor

C# Razor View 将 null 对象传递给 JavaScript

将参数传递给Ajax成功函数中的javascript函数?

JavaScript函数未将我的参数传递给其他函数

使用Razor在Ajax Call中传递多个参数

如何将变量从Razor传递给JavaScript?

c# Razor Pages 选择标签助手

jQuery Ajax调用未将参数传递给ASP.NET Core MVC中的“控制器方法”吗?

如何使用ajax将javascript值传递给aspx c#

如何使用Ajax将JavaScript数组传递给C#函数

Django:如何将JavaScript变量传递给Django URL作为Ajax中的参数?

使用 Razor Pages 在路线中间定义所需的路径参数?

Javascript变量通过Ajax传递给PHP

通过AJAX将HTML参数传递给C#MVC控制器操作

将ajax请求中的多个参数传递给函数后面的C#代码

在 Razor Pages 上不显眼的 ajax 帖子后更新部分视图

AJAX调用会在Razor Pages中重新加载我的整个页面吗?

Razor Pages ajax 发布错误“SyntaxError: Unexpected token < in JSON at position 0”

使用AJAX Get的.NET Core Razor Pages可以填充引导模态中的数据

Razor Pages - 是否可以路由到视图组件以进行 AJAX 刷新

Razor / C#日期转换为Javascript

Razor Pages-将抽象类传递给Html.Partial期望接口抛出错误

Razor Pages OnPost - 父页面是否可以使用在创建时传递给它的部分的相同部分模型?

将来自JavaScript函数的数据作为对象参数传递给@ Html.Action()C#