2016-06-28 90 views
1

创建ajax调用时,仅获取第二个参数。无法获取MVC控制器中的所有ajax参数

阿贾克斯:

控制器: -

public string AddEmployee(EmpDetail Emp, int? File_ID) 
     { 
     .... 
} 

型号: -

public partial class EmpDetail 
    { 
     public int Id { get; set; } 
     public string name { get; set; } 
     public System.DateTime DOB { get; set; } 
     public string Gender { get; set; } 
     public string Email { get; set; } 
     public string Mobile { get; set; } 
     public string Address { get; set; } 
     public System.DateTime JoiningDate { get; set; } 
     public int DepartmentID { get; set; } 
     public int DesignationID { get; set; } 
     public Nullable<int> FileId { get; set; } 
     public Nullable<int> CountryId { get; set; } 
     public Nullable<int> StateId { get; set; } 
    } 

我也曾尝试

data: JSON.stringify(employee,File_ID) 

我知道这是错误的,但在这里我只得到第一个参数。

+0

您是否尝试过直接供应的对象?将JSON字符串一起打包是一种非常脆弱的方法,并且将'EmpDetail'作为字符串提供给ModelBinder可能会产生问题。 'data:{Emp_Detail:employee,File_ID:File_ID},' –

+0

我已经试过这个以及这个数据:{EmpDetail:JSON.stringify(employee),File_ID:File_ID},但只获得第二个参数1st blank是 –

回答

2

试试这个,

var empData= JSON.stringify({ EmpDetail: employee, File_ID: File_ID }); 

和AJAX,

return $http({ 
      method: "post", 
      url: "/myform/AddEmployee", 
      data: empData, 
      dataType: "json" 
     }) 

希望帮助。

+0

EmpDetails在这里是空白的,只有获得file_ID –

+0

@SunilChaudhry你的员工变量应该与你在控制器中所期望的参数具有相同的名称。 – Berkay

+0

我通过相同的名字 –

0

您可以发送JavaScript对象而不是字符串

return $http({ 
       method: "post", 
       url: "/myform/AddEmployee", 
       data: { EmpDetail: employee, File_ID: File_ID },    
       dataType: "json" 
      }) 
+0

EmpDetails是空白的,只能得到file_ID –

+0

你能更新你的代码并把员工变量的值 – Kld

+0

EmpDetails或EmpDetail?你发送的变量是EmpDetail – Kld