2017-08-02 176 views
1

我想提出一个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()); 
    } 
+0

__Something我可以发现:__ 在你的Ajax对象的类型字段: _type:“后” _ 还请澄清你在哪里得到空?它是返回Ajax还是发布的数据?一些更多的信息,我可以帮助你。 – Terrance00

+0

嗨@ Terrance00,我收到控制器中的空数据,参数ProjecteId始终为空。我修改了我的帖子来澄清这一点,非常感谢! – NorbertFD

回答

1

首先验证客户端数据:

由于没有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() + "'" 
}); 

当然,您的另一种选择是简单地发送一个整数。

+0

首先,非常感谢帮助我:) 请求有这些数据:{“ProjecteId”:“2”},我认为这是正确的。 模型ProjecteModel(没有[FromBody])不为null,但属性ProjecteId有一个空值:( 正确的dataType是html,它的工作原理(数据类型:“html”),我改变了它只是为了尝试其他 如果我使用[FromBody] ProjecteModel为null .. – NorbertFD

0

我已经解决,只是把contetType: '应用/的X WWW的形式,进行了urlencoded'。

感谢您的帮助!

+0

我以为你想专门发送json。无论如何,编辑应该现在工作。 – Terrance00

+0

所以对不起@ Terrance00我的错误.. – NorbertFD

+0

那么,时间将会到来当你想发送json时 - 上面的答案可以作为你的指导。 – Terrance00