2016-07-20 44 views
1

我正在使用mvc5。我使用上传图片到云端并调用事件的小部件。成功后,我需要写一些信息到数据库。第一行代码中的数据。如何从请求获取POST数据asp mvc 5

$(document).on('cloudinarywidgetsuccess', function (e, data /*this data I need in database*/) { 
    $.ajax({ 
     url: "/Cabinet/UploadImageCallback", 
     type: "POST", 
     data: data, 
     success: function (data) { 
      if (data.status == "success") { 
       console.log(data); 
      } else { 
       console.log("db error"); 
       console.log(data); 
      } 
     }, 
     error: function (data) { 
      console.log("An error has occured!!!"); 
      console.log(data); 
     } 
    }); 
}); 

我想以json格式在控制器中获取数据。如果我以这种方式发送.php,我可以用这种方式访问​​数据$_POST['KEY']。如何在MVC5中获得类似的功能?

+0

'data'看起来怎么样? – Shyju

+0

@Shyju json array – Nikita

+1

什么结构?创建一个具有相同结构的类并使用它作为参数。数据发布时,模型联编程序会将发布的数据映射到该类的一个对象,并且可以访问该数据。 – Shyju

回答

1

您可以使用模型作为参数;大多数情况下,ASP.Net MVC的Default ModelBinder可映射到您的模型。

$.ajax({ 
    url: "@Url.Action("UploadImageCallback", "Cabinet")", // If you want strongly-typed URL 
    contentType: "application/json; charset=utf-8", 
    method: "POST", 
    data: JSON.stringify(data) 
    ... 
}); 

public class CustomerModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

[HttpPost] 
public ActionResult UploadImageCallback(CustomerModel model) 
{ 
    // Do something 
} 
+0

我已阅读关于模型粘合剂。所以如果你需要一些字段,你可以直接写下一个字段:'public ActionResult UploadImageCallback(string field1,string field3)'。模型绑定器会自动搜索与可用数据源中的动作参数(POST,GET,SESSION - 无关紧要)相同名称的json变量。第一个名称相同,第二个联编程序尝试将字符串值转换为参数类型,如果两个条件都为真,则联编程序将值发送到操作。 – Nikita