Asp.net core mvc ASP.NET核心MVC AJAX

Asp.net core mvc ASP.NET核心MVC AJAX,asp.net-core-mvc,asp.net-ajax,Asp.net Core Mvc,Asp.net Ajax,当dropdownlist的值发生变化时,我想放置一个partialview。 对于我的代码,它可以工作,但是当我想使用post方法将数据发送到控制器时,我总是有空值(控制器参数总是有空数据)。我见过很多不同的方法,但是没有人适合我 我的视图ajax代码: @section scripts { <script type="text/javascript"> $("#ProjecteId").on("change", function () { var req

当dropdownlist的值发生变化时,我想放置一个partialview。 对于我的代码,它可以工作,但是当我想使用post方法将数据发送到控制器时,我总是有空值(控制器参数总是有空数据)。我见过很多不同的方法,但是没有人适合我

我的视图ajax代码:

@section scripts {
<script type="text/javascript">

    $("#ProjecteId").on("change", function () {
        var request = JSON.stringify({
            'ProjecteId': $('#ProjecteId').val()
        });
        console.log(request);
        $.ajax({
            type: 'Post',
            url: '/Consultas/MostrarTipusPersona',
            dataType: 'html',
            contentType: 'application/json',
            data: request,
            success: function (data) {

                console.log('sample', data);
            },
            error: function () {
            }
        });
    });
</script>

首先验证客户端数据:

var request = JSON.stringify({
    'ProjecteId': "'" + $('#ProjecteId').val() + "'"
});
由于未提供html,请记录您的json:

var request = ...
console.log(request);
$.ajax(...)
确保服务器端需要正确的数据

在代码中,服务器端需要一个包含字符串成员的对象。那我们就这么说吧。我们将创建一个表示要发送到服务器的json对象的对象:

public class ProjectedModel
{
    public string ProjecteId {get;set;}
}
现在修改您的方法以期望使用此模型:

public IActionResult MostrarTipusPersona(ProjectedModel model)  
PS:看起来您的客户端ajax方法需要json。我建议从ajax方法中删除
数据类型:“json”
,因为数据类型将是partialhtml视图。(只需将其作为字符串接收,或者展开您的问题,以便我们确定。)

编辑:

var request = JSON.stringify({
    'ProjecteId': "'" + $('#ProjecteId').val() + "'"
});
传递字符串值似乎是一个问题。那么,有两件事需要尝试:

(1)使用
toString()方法将数据转换为字符串

 var request = JSON.stringify(
        {'ProjecteId': ($('#ProjecteId').val()).toString()
    });
(2)像这样内联执行:

var request = JSON.stringify({
    'ProjecteId': "'" + $('#ProjecteId').val() + "'"
});

当然,您的另一个选择是只发送一个整数。

我有解决方案,只需输入contetType:'application/x-www-form-urlencoded'


谢谢你的帮助

我可以发现:在ajax对象的type字段中:type:“post”也请澄清从哪里得到空值?它是在Ajax的返回中还是在您发布的数据中?更多信息,我可以帮助你。嗨@Terrance00,我收到控制器中的空数据,参数ProjecteId总是空的。我已经修改了我的帖子来澄清这一点,非常感谢!首先,非常感谢您的帮助:)请求包含以下数据:{“ProjecteId”:“2”},我认为它是正确的。模型ProjecteModel(不带[FromBody])不是空的,但是属性ProjecteId有一个空值:(正确的数据类型是html,它可以工作(数据类型:“html”),我已经更改了它,只是为了尝试其他方法。如果我使用[FromBody]ProjecteModel为空。我以为你特别想发送json。无论如何,编辑现在应该可以了。好吧,你想发送json的时候到了——上面的答案可以作为你的指南。祝你编码愉快。