在mvc razor中将模型从视图发送到控制器onchange

时间:2014-01-02 06:34:06

标签: c# asp.net-mvc asp.net-mvc-4 jquery razor

我有以下代码

<script type="text/javascript">
$(function () {  
       $('#cboDeptID').change(function () {
           var selectedDepartmentId = $(this).val();
           var depmodel = {
            Employees:'@Model.Employees',
            Departments:'@Model.Departments',   
            DepartmentId:'@Model.DepartmentId',
            DepartmentName:'@Model.DepartmentName',               
            SelectedDepartmentId:'@Model.SelectedDepartmentId'               
           };
            $.ajax({
            url: '@Url.Action("GetEmployees","DepartmentController")',
            contentType: 'application/json; charset=utf-8',
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify({ model: depmodel })
           })
.success(function (result) {
        alert('Success!');})
    .error(function (xhr, status){               alert('The provider could not be updated.');});

        });         
    });
</script>

关于这个组合更改我想将模型传递给控制器​​。该模型包含上述成员,例如employees,departments,departmentid等。控制器操作将在组合更改时触发,但模型成员值为null。我做错了吗?请帮助。

控制器方法如下所示

  public ActionResult GetEmployees(DepartmentModel model)
    {
//    code goes here

return View ("DepartmentView",model);
         }

1 个答案:

答案 0 :(得分:0)

您需要将JSON.stringify行更改为:

data: JSON.stringify(depmodel)

将此数据发布到控制器时的自动模型绑定变得混乱,因为当您调用JSON.stringify时,您将在另一个数组中发布键值对(员工,部门等)。所以它收到的是:

{ model: { Employees: <value>, ... } }

但它想要的只是它试图绑定的模型中属性的键值对