ASP.NET MVC核心AJAX
我想提出一个partialview时的下拉列表的值更改。 与我的代码,它的工作原理,但是当我想用post方法发送数据到控制器时,我总是有空值(控制器参数始终为空数据)。我看到了很多不同的方式来做到这一点,但没有人为我工作。ASP.NET MVC核心AJAX
我的观点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>
}
我的控制器:
[HttpPost]
public IActionResult MostrarTipusPersona(ProjecteModel pm)
{
return PartialView("_Ciutada", new Ciutada());
}
首先验证客户端数据:
由于没有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方法中删除dataType: "json"
,因为数据类型将是partialhtml视图。 (只是接受它作为一个字符串 - 或扩大你的问题,所以我们可以肯定的。)
编辑:
传递一个字符串值似乎是问题,那么,有两件事尝试:
(1)中的数据转换为字符串toString()
方法
var request = JSON.stringify(
{'ProjecteId': ($('#ProjecteId').val()).toString()
});
(2)我牛逼内嵌像这样:
var request = JSON.stringify({
'ProjecteId': "'" + $('#ProjecteId').val() + "'"
});
当然,您的另一种选择是简单地发送一个整数。
首先,非常感谢帮助我:) 请求有这些数据:{“ProjecteId”:“2”},我认为这是正确的。 模型ProjecteModel(没有[FromBody])不为null,但属性ProjecteId有一个空值:( 正确的dataType是html,它的工作原理(数据类型:“html”),我改变了它只是为了尝试其他 如果我使用[FromBody] ProjecteModel为null .. – NorbertFD
我已经解决,只是把contetType: '应用/的X WWW的形式,进行了urlencoded'。
感谢您的帮助!
我以为你想专门发送json。无论如何,编辑应该现在工作。 – Terrance00
所以对不起@ Terrance00我的错误.. – NorbertFD
那么,时间将会到来当你想发送json时 - 上面的答案可以作为你的指导。 – Terrance00
__Something我可以发现:__ 在你的Ajax对象的类型字段: _type:“后” _ 还请澄清你在哪里得到空?它是返回Ajax还是发布的数据?一些更多的信息,我可以帮助你。 – Terrance00
嗨@ Terrance00,我收到控制器中的空数据,参数ProjecteId始终为空。我修改了我的帖子来澄清这一点,非常感谢! – NorbertFD