如何从请求中获取 ASP MVC 5 的 POST 数据

4

我正在使用mvc5。我使用小部件将图像上传到云并调用事件。成功后,我需要将一些信息写入数据库。数据在第一行代码中。


$(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中获得类似的功能?


"data"看起来是什么样子? - Shyju
1
什么结构?创建一个具有相同结构的类,并将其用作参数。当数据被发布时,模型绑定器将把发布的数据映射到该类的对象上,然后您可以访问它。 - Shyju
@Shyju 谢谢,问题已解决。 - Nikita
1个回答

4
您可以将模型作为参数使用;大多数情况下,ASP.Net MVC的默认模型绑定器可以映射到您的模型。
$.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
}

我已经了解了模型绑定器。所以,如果你需要一些字段,你可以在操作中写下以下内容:public ActionResult UploadImageCallback(string field1, string field3)。模型绑定器会自动搜索与操作参数同名的 JSON 变量,在可用的数据源(POST、GET、SESSION - 无所谓)中。第一个条件是名称相同,第二个条件是绑定器尝试将字符串值转换为参数的类型,如果两个条件都满足,则绑定器将该值发送到操作中。 - Nikita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接