gha*_*ani 7 c# asp.net-mvc multipartform-data asp.net-web-api
我有ASP.NET MVC webapplication我添加了webapi webServvices.
我有以下javascript代码.
var data = new FormData();
data.append("filesToDelete", "Value");
$.ajax({
type: "POST",
url: "/api/FileAttachment/UploadFiles?clientContactId=" + clientContactId,
contentType: false,
processData: false,
data: data,
success: function (result) {
// Do something
},
error: function (xhr, status, p3, p4) {
// Do something
}
});
Run Code Online (Sandbox Code Playgroud)
以下是WebApi代码:
public void UploadFiles(int clientContactId) {
if (!Request.Content.IsMimeMultipartContent()) {
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var jsonContent = Request.Content.ReadAsStringAsync().Result;
}
Run Code Online (Sandbox Code Playgroud)
现在如何根据从javascript FormData传递的键值对读取jsonContent?
我试过jsonContent 但它需要特殊的类型来反序列化.
我希望获得传递给javascript FormData的关键"filesToDelete"的价值.
怎么看?
谢谢
小智 7
我会做的是:
客户端:而不是在查询字符串中传递clientContactId.在FormData对象本身中附加键值对.将dataType设置为JSON.
var data = new FormData();
data.append("filesToDelete", "Value");
data.append("clientContactId",
(clientContactId != undefined || clientContactId != null) ? clientContactId : ''));
$.ajax({
type: "POST",
url: "/api/FileAttachment/UploadFiles",
/* ONLY IF YOU ARE UPLOADING A FILE
contentType: false,
processData: false, */
dataType: "JSON"
data: data,
success: function (result) {
},
error: function (xhr, status, p3, p4) {
}
});
Run Code Online (Sandbox Code Playgroud)
服务器端:在服务器端,我们可以使用获取原始请求 HttpContext.Current.Request.
因此,我们可以通过简单地使用FormData对象内部的键值来获取值HttpContext.Current.Request.Params["KeyValue"].
[HttpPost]
public void UploadFiles()
{
var filesToDelete = HttpContext.Current.Request.Params["filesToDelete"];
var clientContactId= HttpContext.Current.Request.Params["clientContactId"];
//Your code here...
}
Run Code Online (Sandbox Code Playgroud)
如果您想像这样使用 JSON 发送数据,您应该在 C# 中定义一个模型,该模型与您在 JSON 中传回的模型相匹配。您的 WebApi 控制器方法将如下所示:
public HttpResponseMessage Post([FromBody]WorkerAbsenceModel absence)
{
bool ok = svc.CreateWorkerAbsence(absence);
if (ok)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41180 次 |
| 最近记录: |