【问题标题】:ASP.NET CORE Ajax post additional paramaters with view modelASP.NET CORE Ajax 使用 viewmodel 发布附加参数
【发布时间】:2020-02-13 17:21:31
【问题描述】:

在我的项目(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
    }
});

我的控制器操作如下所示:

public IActionResult DoSomething(MyModel model, string passtest)
{
    //some action code here
}

现在,帖子有效,但在我的控制器操作中,只有“模型”填充了数据。变量“passtest”为空。 “模型”中也没有“通过测试”。

我做错了什么?

注意:我发现了一种填充隐藏字段(并将它们添加到视图模型中)的解决方法,但显然在帖子本身中传递多个参数似乎更实用...

【问题讨论】:

    标签: asp.net-core asp.net-ajax


    【解决方案1】:

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

    url = url + '?passtest=' + myVal

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

    然后你想对其进行编码,这样它们就不会被解析为 url 符号的一部分:

    url = url + '?passtest=' + encodeURIComponent(myVal)

    【讨论】:

    • 谢谢,这行得通。 myVal 是否可以包含特殊字符,例如:' " / \ ? +
    • @TheMixy 有点像,您需要使用 encodeURIComponent(part) 函数对包含特殊字符的 url 部分进行编码。我已经更新了答案。
    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多