Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core ASP.NET核心Ajax使用视图模型发布附加参数_Asp.net Core_Asp.net Ajax - Fatal编程技术网

Asp.net core ASP.NET核心Ajax使用视图模型发布附加参数

Asp.net core ASP.NET核心Ajax使用视图模型发布附加参数,asp.net-core,asp.net-ajax,Asp.net Core,Asp.net Ajax,在我的项目ASP.NET Core 2.2中。MVC我正在尝试使用视图模型的附加参数来完成一篇ajax文章。页面上的表单具有id='frmMain' 我的js看起来像这样: //post var data = { model: $("#frmMain").serialize(), passtest: 'test' }; $.ajax({ type: 'post', url: url, data: JSON.stringify(data), dat

在我的项目ASP.NET Core 2.2中。MVC我正在尝试使用视图模型的附加参数来完成一篇ajax文章。页面上的表单具有id='frmMain'

我的js看起来像这样:

//post
var data = {
    model: $("#frmMain").serialize(),
    passtest: 'test'
};

$.ajax({
    type: 'post',
    url: url,
    data: JSON.stringify(data),
    dataType: 'json',
    success: function () {
    //alert('form was submitted');
}
}).done(function (result) {

    if (result.status === "success") {

        //some code here
    }
    } else {
        //some code here
    }
});
我的控制器操作如下所示:

//post
var data = {
    model: $("#frmMain").serialize(),
    passtest: 'test'
};

$.ajax({
    type: 'post',
    url: url,
    data: JSON.stringify(data),
    dataType: 'json',
    success: function () {
    //alert('form was submitted');
}
}).done(function (result) {

    if (result.status === "success") {

        //some code here
    }
    } else {
        //some code here
    }
});
public IActionResult DoSomethingMyModel模型,字符串passtest { //这里有一些动作代码 } 现在,post可以工作了,但在我的控制器中,只有action模型充满了数据。变量passtest为空。模型中也没有passtest

我做错了什么


注意:我找到了一种解决方法,可以填充隐藏字段并将其添加到视图模型中,但在帖子中直接传递多个参数似乎更为实用…

您可以使用查询符号将其附加到url

url=url+'?passtest='+myVal

假设您的myVal包含特殊字符,如,/?:@&=+$

然后,您希望对其进行编码,以便它们不会作为url符号的一部分进行解析:


url=url+'?passtest='+encodeURIComponentmyVal

谢谢,这很有效。myVal是否可以包含特殊字符,如:'/\+@对于混合类型,您需要使用encodeURIComponentpart函数对url中包含特殊字符的部分进行编码。我已经更新了答案。