通过 AJAX 将数组传递给控制器​​操作

Ole*_* Sh 5 c# ajax asp.net-mvc json

我看到类似的问题,但没有一个对我有帮助。我有最简单的代码:

    public JsonResult JsonGetStatesInfo(object[] instructions)
    {
        if (Request.IsAjaxRequest())
        {

            return Json(String.Empty);
        }
        else
            throw new NoAjaxRequestException();
    }
Run Code Online (Sandbox Code Playgroud)

和客户端:

            var instructions = [];
            instructions.push('abc');
            instructions.push('ddd');
            instructions.push('assdbc');
            var inst = JSON.stringify(instructions);
            $.ajax({
                cache: false,
                data: { 'instructions': inst },
                traditional: true,
                dataType: 'json',
                url: '/State/JsonGetStatesInfo',
                type: 'post',
                success: function (resp) {
                },
                error: function (data) {
                    alert(data.error);
                }
            });
Run Code Online (Sandbox Code Playgroud)

在客户端,我尝试使用 JSON.stringify,不使用 JSON.stringify,使用传统:true,不使用传统:true

在服务器端,我尝试作为参数:object[]、object、List<object>、List<string>、IEnumerable<string> 等

什么都没起作用!怎样做才正确呢?

已解决:我的问题很简单 - 数组的实际值中的一个具有 HTML 标签。只需要添加 [ValidateInput(false)] 到操作方法中

Mic*_*osa 1

至少,您可以将 JavaScript 数组作为字符串传递并在控制器中反序列化

public JsonResult JsonGetStatesInfo(string instructions)

var instructionsArray= JsonConvert.DeserializeObject<string[]>(instructions);
Run Code Online (Sandbox Code Playgroud)

或者使用新数组,如下所述:https ://stackoverflow.com/a/310136/3063094